我在一个文件夹中有很多文件,例如
compose_icon_200x200.png
mail_icon_200x200.png
attach_icon_200x200.png
delete_icon_200x200.png
我想从所有文件名中删除 _200x200。我努力了
find . -name '*_200x200*' -exec bash -c 'mv "$0" echo $0' "{}" \;
但出现错误,例如
./mail_icon_200x200.png: ./mail_icon_200x200.png: Permission denied
答案1
for f in *_200x200*; do
mv -- "$f" "${f/_200x200/}"
done
或者如果您有 perlrename
命令:
rename 's/_200x200//' ./*_200x200*
答案2
和zsh
:
autoload zmv # best in ~/.zshrc
zmv -n '(**/)(*)_200x200(*.png)' '$1$2$3'
(高兴时删除-n
)。
或者对于任意尺寸:
zmv -n '(**/)(*)_<->x<->(*.png)' '$1$2$3'
(请注意,它仅删除每个文件名中出现的一次_<width>x<height>
)。
答案3
for file in *.png;
do
mv "$file" "`echo $file | sed 's/_200x200//'`"
done