次のフォルダには多くのファイルがあります。
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
またはperlコマンドがある場合rename
:
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'
(各ファイル名の1つだけが削除されることに注意してください_<width>x<height>
。)
答え3
for file in *.png;
do
mv "$file" "`echo $file | sed 's/_200x200//'`"
done