Comment puis-je renommer par lots un ensemble de noms de fichiers sous Linux?

9

J'ai un dossier avec des images nommé:

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

Comment les renommer comme suit?

pic001.png
pic002.png
pic003.png 

J'ai essayé mv "pic*-2.png" "pic*.png"mais j'obtiens toujours des erreurs.

user114558
la source

Réponses:

11

Cela supprimera le premier -2trouvé dans chaque nom de fichier:

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

Pour le tester, ajoutez simplement echola mvligne.

Aluísio ASG
la source
9

Vous avez besoin de la commande «renommer» correctement nommée!

Essayez quelque chose comme ceci:

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

Il prend une expression régulière perl comme premier argument, donc vos options de correspondance de motifs et de manipulation sont assez étendues. Voir la page de manuel rename (1) pour plus de détails.

Flimzy
la source