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

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

我有一堆图片不知为何被重命名myimage.jpgmyimage.jpg_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

答案1

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

答案2

在一个终端,转到这些文件所在的目录(带有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。最后一个命令还会查找目录的符号链接。

相关内容