for f in *_200x200*; do
mv -- "$f" "${f/_200x200/}"
done
ou se você tiver o comando perl rename
:
rename 's/_200x200//' ./*_200x200*
Eu tenho muitos arquivos em uma única pasta como
compose_icon_200x200.png
mail_icon_200x200.png
attach_icon_200x200.png
delete_icon_200x200.png
Eu quero remover o _200x200 de todos os nomes de arquivo. Eu tentei
find . -name '*_200x200*' -exec bash -c 'mv "$0" echo $0' "{}" \;
Mas recebendo erros como
./mail_icon_200x200.png: ./mail_icon_200x200.png: Permission denied
com zsh
:
autoload zmv # best in ~/.zshrc
zmv -n '(**/)(*)_200x200(*.png)' '$1$2$3'
(remova -n
quando feliz).
Ou para dimensões arbitrárias:
zmv -n '(**/)(*)_<->x<->(*.png)' '$1$2$3'
(note que remove apenas uma ocorrência de <width>x<height>
por nome de arquivo).
Tags rename find shell-script