Wiki CgX

Parce que j'ai un cerveau, mais pas trop.

Outils pour utilisateurs

Outils du site


it:linux-utilitaires:renommer-en-masse

Renommage en masse

Il existe différentes techniques de renommage en masse selon ce qu'on souhaite faire.

Avec la commande rename, il est possible de simuler l'opération en y ajoutant l'option -n ! On voit alors s'afficher les opérations effectuées sur les fichiers concernés

Changer l'extension

Ici, comment changer tout ce qui se termine par “JPEG” par “jpg” :

rename

rename "s/\.JPEG$/\.jpg/" *.jpeg

Explication simple :

  • le point est échappé avec \.
  • le $ sert à exprimer la fin de la chaîne

bash

for file in *.JPEG; do 
    mv -- "$file" "${file%.JPEG}.jpg"
done

Retirer/Remplacer un mot ou un bout de chaîne

Remplacer :

rename "s/\monMot/monNouveauMot/" *

Retirer :

rename "s/\monMot//" *

La chaine source est variable

Voici un exemple parlant (j'espère) :

rename -n 's/\(Prefix.*?\)//' *

Ici, la commande va retirer tout ce qui contient (Prefix<quelque chose>) du nom de fichier

Le “?” sert à ne tester que la première occurence de la parenthèse fermante qui suit, et non toutes les autres

Changer la casse (minuscules ou majuscules)

Tout en minuscules :

rename 'y/A-Z/a-z/' *

Sur des système particuliers, comme en HFS+ :

rename -f 'y/A-Z/a-z/' *

Tout en majuscules :

rename 'y/a-z/A-Z/' *

Parallèlement au s/, le préfixe y/ permet de définir des expressions de translittération (a-z, etc…)

Changer la casse uniquement de l'extension

Convertir en minuscules :

rename 's/\.([^.]+)$/.\L$1/' *

Convertir en majuscules :

rename 's/\.([^.]+)$/.\U$1/' *
  • \L permet de convertir l'expression capturée $1 en minuscules
  • \U permet de convertir l'expression capturée $1 en majuscules
it/linux-utilitaires/renommer-en-masse.txt · Dernière modification : 22 May 2023 :: 15:04 de CgX