如何在bash中以递归方式替换部分文件名

时间:2016-04-20 19:09:49

标签: linux bash centos

我有一个目录,其子目录包含名称错误的图像文件,如filename.jpg.jpg我想用filename.jpg替换这个rec​​ursiveley 我试过了:

find ./ -type f -exec sed -i 's/string1/string2/g' {} \;

sed -i 's/foo/bar/g' *

但没有效果

谢谢

2 个答案:

答案 0 :(得分:1)

find ./ -iname "*.jpg.jpg" -exec rename .jpg.jpg .jpg '{}' \;

如果您有一个使用perl正则表达式的rename实用程序,请使用以下命令:

find ./ -iname "*.jpg.jpg" -exec rename 's/\.jpg\.jpg$/.jpg/' '{}' \;

答案 1 :(得分:1)

可能您可以使用内置的rename命令。

rename 's/\.jpg\.jpg$/.jpg/' *.jpg.jpg

第一个参数是一个正则表达式,匹配.jpg.jpg结尾的文件名,并替换为.jpg。 对于当前目录中格式为.jpg.jpg的文件,第二个参数将

有关详细信息,请阅读手册页。