【发布时间】:2017-08-08 06:44:23
【问题描述】:
我正在开发一个单行程序来删除某个位置的大量文件的扩展名。
这就是它的样子,它应该可以工作,但它没有:
find . -type f -name '*.txt' -exec mv {} $( echo {} | sed 's/\.txt//g' ) \;
更换从未发生。 “mv”表示:
mv: \`./partaa.txt' and `./partaa.txt' are the same file
我知道问题出在这里:
$( echo {} | sed 's/\.txt//g' )
但是如果我尝试这样的事情,它会完美地工作:
echo $( echo "partaa.txt" | sed 's/.txt//g' )
为什么当它是“exec”的一部分时它不起作用?
【问题讨论】:
标签: unix sed replace find exec