我有很多以“_100.jpg”结尾的文件,它们分布在嵌套的文件夹/子文件夹中。现在,我想要一种可以递归地复制和重命名所有这些文件的技巧,使它们具有“_crop.jpg”后缀。不幸的是,我不熟悉bash脚本编写,所以不知道确切的做法。我通过谷歌搜索并尝试了带有“-exec”参数的“find”命令,但没有成功。请帮助我。谢谢。
find bar -iname "*_100.jpg" -printf 'mv %p %p\n' \
| sed 's/_100\.jpg$/_crop\.jpg/' \
| while read l; do eval $l; done
如果您有Bash 4
shopt -s globstar
for file in **/*_100.jpg; do
echo mv "$file" "${file/_100.jpg/_crop.jpg}"
one
find . -type f -iname "*_100.jpg" | while read -r FILE
do
echo mv "${FILE}" "${FILE/_100.jpg/_crop.jpg}"
done
find ... -exec
或find ... -print0 | xargs -0
。 - Philipp这个使用 Perl 脚本,你的系统上可能已经有了。有时候它被称为 prename
而不是 rename
:
find /dir/to/start -type f -iname "*_100.jpg" -exec rename 's/_100/_crop' {} \;