如何在 bash 中递归替换文件名的一部分



我有一个目录,其中包含包含错误名称(如文件名)的图像文件的子目录.jpg.jpg我想用文件名替换这个递归.jpg我试过:

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

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

但没有一个有效

谢谢

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

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

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

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

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

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

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

最新更新