Remover palavra específica do nome do arquivo

0

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
    
por Arun 18.04.2018 / 12:42

2 respostas

1
for f in *_200x200*; do
    mv -- "$f" "${f/_200x200/}"
done

ou se você tiver o comando perl rename :

rename 's/_200x200//' ./*_200x200*
    
por 18.04.2018 / 15:16
0

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).

    
por 18.04.2018 / 13:33