如何在bash中recursion地replace文件名的一部分

我有一个目录有子目录包含图像文件与错误的名称,如像filename.jpg.jpg我想用这个代替这个rec​​ursiveley filename.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格式的文件。

有关更多信息,请阅读手册页。