0

我想用我试过的 *-6.1.dll 重命名所有名为 *-6.0.dll 的文件:

 find . -name '*-6.0.dll*' -exec mv {} $(echo {} | sed -e 's/-6.0.dll/-6.1.dll/g') \;

但这不起作用;文件名没有改变。

有任何想法吗?

4

2 回答 2

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一旦您满意结果是正确的,请删除。

于 2013-05-23T18:13:29.177 回答
1

用这个: find . -name '*-6.0.dll*' -exec sh -c 'mv {} $(echo {} | sed -e 's/\-6\.0\.dll/\-6\.1\.dll/g')' \;

可以在这里找到使用sh -cvs的解释http://linuxplayer.org/2010/05/shell-programming-trap-batch-rename-with-findmv

我还修改了你的正则表达式,一些字符需要转义才能正确匹配。

于 2013-05-23T18:42:19.127 回答