如何递归重命名图像/文件?例如:
folder
- subfolder1
- a-copy.jpg
- subfolder2
- b-copy.jpg
- subfolder3
- c-copy.jpg
我想要得到:
folder
- subfolder1
- a-thumb.jpg
- subfolder2
- b-thumb.jpg
- subfolder3
- c-thumb.jpg
我试过:
for i in $(find . -iname '*.jpg') ; do rename 's/-copy/-thumb/' *.jpg; done
当然不行!有什么想法吗?
答案1
使用rename
,首先检查-n
是否进行试运行,如下所示:
rename -n 's/-copy\./-thumb./ if -f' folder/*/*.jpg
...如果对命名输出满意,请删除-n
并再次运行它以进行实际重命名。
或者在循环中,首先检查echo
包含的内容,如下所示(从包含目录的父目录中运行,或者在下面folder
提供/full/path/to/folder/*/*.jpg
):
for f in folder/*/*.jpg
do
[ -f "$f" ] && echo mv -nv -- "$f" "${f/-copy./-thumb.}"
done
...如果对命名输出满意,请删除echo
并再次运行,如下所示:
for f in folder/*/*.jpg
do
[ -f "$f" ] && mv -nv -- "$f" "${f/-copy./-thumb.}"
done
...进行实际的重命名。
要包含其他文件扩展名(区分大小写),请将它们添加到括号扩展中,如folder/*/*.{jpg,JPG,png,PNG}
等。