如何重命名名称以“_backup”结尾的文件夹中的所有文件

我有一堆图像以某种方式从myimage.jpg重命名为myimage.jpg_backup ,因此我网站上的图像不再加载。 如何递归查找以_backup结尾的所有图像, _backup删除_backup部分,同时保留文件名的其余部分?

我试过这样的事情:

 sudo find . -name "*.jpg_backup" -exec rename -n 's/_backup$//' *.jpg_backup ';' 

但它给了我一个错误:

 Can't rename *.jpg_backup *.jpg: No such file or directory 

尝试rename -v 's/\.jpg_backup$/\.jpg/' *.jpg_backup -v为您提供详细输出。 请参阅此处如何重命名

在终端中 ,转到这些文件所在的目录(使用cd /path/to/folder )。 如果文件不包含任何空格或特殊字符\[*? ,运行以下命令:

 for file in `find . -name *.jpg_backup` ; do mv "$file" "${file%_backup}"; done 

如果您认为您的文件名包含空格或通配符,请使用:

 find . -type f -name '*.jpg_backup' -print0 \ | while IFS= read -r -d '' file ; do mv -- "$file" "${file%_backup}"; done 

要么:

 shopt -s globstar; for file in /path/to/folder/**/*.jpg_backup ; do mv -- "$file" "${file%_backup}"; done 

递归上面的命令将从当前文件夹和子文件夹中找到所有*.jpg_backup文件,并将它们重命名为*.jpg 。 最后一个也看到了目录的符号链接。