我想用* -6.1.dll重命名所有名为* -6.0.dll的文件 我试过了:
find . -name '*-6.0.dll*' -exec mv {} $(echo {} | sed -e 's/-6.0.dll/-6.1.dll/g') \;
但这不起作用;文件名没有改变。
有什么想法吗?
答案 0 :(得分:4)
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
。
答案 1 :(得分:1)
使用这个:
find . -name '*-6.0.dll*' -exec sh -c 'mv {} $(echo {} | sed -e 's/\-6\.0\.dll/\-6\.1\.dll/g')' \;
可以在此处找到使用sh -c
vs mv
的说明http://linuxplayer.org/2010/05/shell-programming-trap-batch-rename-with-find
我还修改了你的正则表达式,需要转义一些字符才能正确匹配。