Menu Fermer

La commande rename Linux : utilisation et exemples

La commande rename de Linux est une commande puissante pour renommer des fichiers sur Linux.
Elle permet de renommer très facilement des fichiers par lots grâce aux expressions régulières.
C’est la commande à utiliser lorsque vous souhaitez changer les extensions de plusieurs fichiers, passer des lettres minuscules en majuscules des noms de fichiers, etc.

Dans ce tutoriel, je vous montre comment utiliser la commande rename sur Linux avec de multiples exemples.

La commande rename Linux : utilisation et exemples

Comment utiliser la commande rename sur Linux

La commande rename n’est pas une commande de base, elle n’est donc probablement pas incluse par défaut dans votre distribution Linux.
Ainsi, si Linux vous indique que la commande est introuvable, vous devez l’installer :

-bash: rename: command not found

Pour cela, utilisez l’utilitaire de paquet comme APT ou Yum/dnf :

  • Pour Ubuntu, Mint ou Debian, use sudo apt install rename
  • Avec CentOS and Fedora, use sudo yum install prename
  • Enfin du côté de Arch Linux, use sudo pacman -S rename
Installer rename avec apt sur Debian, Ubiuntu ou Mint

La commande rename est utilisée pour renommer plusieurs fichiers ou répertoires de Linux. Il offre plus de fonctionnalités que la commande MV, mais peut être plus difficile à utiliser car elle nécessite une connaissance de base des expressions régulières (de type PERL).

Voici la syntaxe :

rename [options] 's/[élément du fichier]/[remplacement]/' [fichier]
  • rename: Invoque la commande renommée
  • [options]: Fournit un argument facultatif qui modifie la manière dont la commande exécute
  • s: Indique une expression de substitution
  • [élément du fichier]: Spécifie la partie du nom de fichier que vous souhaitez remplacer
  • [remplacement]: Spécifie un remplacement de la partie du nom de fichier actuel
  • [fichier]: Définit le fichier que vous souhaitez renommer. On peut utiliser les caractères joker pour cible un lot de fichiers

Enfin ce tableau récapitule la plupart des options disponibles.
Attention les options diffèrent d’une distribution Linux à l’autre.

OPTIONSDESCRIPTION
-aRemplace toutes les occurrences de l’élément de nom de fichier au lieu de la première
-dNe renommez pas un répertoire : seulement renommer les fichiers d’un répertoire
-fForce un écrasement de fichiers existants
-iAffiche une invite avant d’écraser les fichiers existants
-lRemplace la dernière occurrence de l’élément de nom de fichier au lieu du premier
-nEffectue une course à sec, ne faisant aucune modification permanente. Mieux combiné avec la sortie verbose (-v)
-sRenomme la cible au lieu du lien symbolique
Non disponible sur Debian mais disponible sur Ubuntu.
Les options de la commande rename

La commande rename Linux : utilisation et exemples

Comment changer les extensions de fichiers

Dans ce premier exemple, nous allons renommer toutes les extensions .txt en .pdf.
Pour cela, on utilise l’expressions régulières suivantes ‘s/.txt/.pdf/’ et on vise tous les fichiers textes avec *.txt :

rename -v 's/.txt/.pdf/' *.txt
Comment changer les extensions de plusieurs fichiers sur Linux avec rename

Dans cet arborescence nous avons plusieurs fichiers PDF.
Ici nous allons renommer l’extension pdf en txt que pour les fichiers qui commencent par exemple.
Ainsi le fichier demo.pdf n’est pas visé.

rename -v 's/.pdf/.txt/' exemple*.pdf
Comment changer les extensions de plusieurs fichiers sur Linux avec rename

Notez que l’on est pas obligé d’utiliser la syntaxe regex.
Ainsi pour renommer les extensions d’un lot de fichiers, vous pouvez aussi utiliser cet exemple :

Comment remplacer une partie du nom d’un fichier

Le remplacement d’une partie différente du nom de fichier suit la même syntaxe.
Pour renommer exemple exemple1.txt, exemple2.txt et exemple3.txt to test1.txt, test2.txt et text3.txt, utilisez:

rename -v 's/exemple/test/' *.txt
Comment remplacer une partie du nom d'un fichier avec rename sur Linux

Comment supprimer une partie du nom d’un fichier

L’option Rename vous permet également de supprimer une partie du nom de fichier en omettant la partie de remplacement de l’expression. Par exemple, si nous voulons raccourcir l’exemple en ex :

rename -v 's/emple//' *.txt
Comment supprimer une partie du nom d'un fichier avec la commande rename

Une autre utilisation pour l’option de rename est de renommer des fichiers avec des noms similaires. Par exemple, si nous voulons renommer des fichiers avec l’exemple et l’échantillon dans leur nom pour tester:

rename -v 's/(ex|s)ample/test/' *.txt

Comment remplacer les espaces dans des noms de fichiers par tirets

Pour utiliser la commande rename afin de remplacer l’espace par un tiret dans le nom de fichier.
Vous pouvez par exemple utiliser cette syntaxe :

rename 'y/ /-/' *.txt
Comment remplacer les espaces dans des noms de fichiers par tirets avec la commande rename

Notez bien l’utilisation du modifieur y/ à la place de s/.
En regex PERL, le modifieur y/ remplace les occurrences de chaque caractère.
En utilisant s/, cela ne va pas remplacer que la première occurence.

rename 's/ /-/' *.txt
Comment remplacer les espaces dans des noms de fichiers par tirets avec la commande rename

Comment convertir des noms de fichiers minuscules en majuscules

Pour convertir des caractères minuscules dans des noms de fichiers en caractères majuscules, utilisez :

rename 'y/a-z/A-Z/' *
Commande rename Linux - renommer et convertir toutes les minuscules en majuscules

Comment convertir des noms de fichiers majuscules en minuscules

Si vous avez des fichiers avec des espaces et que vous souhaitez renommer les fichiers pour remplacer l’espace par un tiret :

rename 'y/A-Z/a-z/' *
Commande rename Linux - renommer et convertir toutes les majuscules en minuscules

Comment gérer l’écrasement de fichiers avec rename

Par défaut, la commande de renommée n’effectue pas l’opération si elle implique de remplacer un fichier existant. Cependant, vous pouvez forcer l’outil à écraser à l’aide de l’option -f.

Par exemple, la commande suivante :

rename 's/txt/pdf/' exemple-1.*

produit la sortie suivante :

exemple-1.txt not renamed: exemple-1.pdf already exists

Mais quand on utilise la commande avec -f :

rename -f 's/txt/pdf/' exemple-1.*

L’opération se terminé sans erreur et exemple-1.pdf est écrasé.

La commande rename et l'écrasement de fichiers avec l'option -f

Déplacer les fichiers entre répertoires avec rename

Vous pouvez également utiliser Renommer pour déplacer des fichiers entre les répertoires, éventuellement en même temps que de faire d’autres modifications (mais voir –filename).

rename 'y/A-Z/a-z/;s/^/nouveau-repertoire\//' *.*