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

9

Eu tenho uma pasta com imagens denominadas:

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

Como os renomeio para o seguinte?

pic001.png
pic002.png
pic003.png 

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

user114558
fonte

Respostas:

11

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

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

Para testá-lo, basta anexar echoà mvlinha.

Aluísio ASG
fonte
9

Você precisa do comando 'renomear' adequadamente nomeado!

Tente algo como isto:

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

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

Flimzy
fonte