Como posso renomear em lote um conjunto de nomes de arquivos no Linux?

8

Eu tenho uma pasta com imagens nomeadas:

pic001-2.png
pic002-2.png
pic003-2.png 

Como posso renomeá-los para o seguinte?

pic001.png
pic002.png
pic003.png 

Eu tentei mv "pic*-2.png" "pic*.png" , mas continue recebendo erros.

    
por user114558 17.06.2011 / 10:40

2 respostas

10

Isso excluirá o primeiro -2 encontrado em cada nome de arquivo:

for f in pic*-2.png; do
  mv "$f" "${f/-2/}"
done

Para testar, prefixar echo na linha mv .

    
por 17.06.2011 / 10:49
9

Você precisa do comando 'rename' apropriadamente chamado!

Tente algo assim:

rename 's/(pic\d+)-\d\.jpg/$1.jpg/' pic*.jpg

Ele usa uma expressão regular perl como o primeiro argumento, portanto, suas opções de correspondência e manipulação de padrões são bastante extensas. Veja a página do manual rename (1) para detalhes completos.

    
por 17.06.2011 / 10:49

Tags