我有一堆图片不知为何被重命名myimage.jpg
为myimage.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
。最后一个命令还会查找目录的符号链接。