我想用我试过的 *-6.1.dll 重命名所有名为 *-6.0.dll 的文件:
find . -name '*-6.0.dll*' -exec mv {} $(echo {} | sed -e 's/-6.0.dll/-6.1.dll/g') \;
但这不起作用;文件名没有改变。
有任何想法吗?
for x in *-6.0.dll; do y=$(echo $x | sed -e 's/-6\.0\.dll$/-6.1.dll/'); echo mv $x $y; done
echo
一旦您满意结果是正确的,请删除。
用这个:
find . -name '*-6.0.dll*' -exec sh -c 'mv {} $(echo {} | sed -e 's/\-6\.0\.dll/\-6\.1\.dll/g')' \;
可以在这里找到使用sh -c
vs的解释http://linuxplayer.org/2010/05/shell-programming-trap-batch-rename-with-findmv
我还修改了你的正则表达式,一些字符需要转义才能正确匹配。