Renommer un fichier fait partie des tâches de base à maîtriser en ligne de commande sur Linux. Hors, la tâche est relativement simple à réaliser avec un seul fichier, mais devient plus complexe lorsqu’il y en a plusieurs. Dans ce tutoriel, je vous explique comment renommer un fichier ou un répertoire sur Linux avec les commandes mv et rename.

Avec la commande mv

La commande mv est l’abréviation de move en anglais. Elle permet de déplacer un fichier ou un répertoire d’un emplacement à un autre. Cette commande permet aussi de renommer un fichier, en le déplacement sous un nouveau nom. Elle est intégrée aux coreutils et donc installée par défaut.

Renommer un fichier ou un répertoire sur Linux avec mv

La syntaxe de la commande mv pour renommer un fichier est la suivante :

mv [OPTIONS] source destination

Par exemple, pour renommer le fichier ancien_nom.txt vers nouveau_nom.txt, vous devez utiliser la commande suivante :

mv ancien_nom.txt nouveau_nom.txt

⚠️ Attention : La commande mv peut écraser le fichier de destination si l’option -i n’est pas spécifiée.

Utilisez la commande ls -l pour visualiser le résultat :

ls -l
Renommer un fichier avec Linux

Vous pouvez bien entendu modifier la destination du fichier, si vous souhaitez le déplacer à un autre emplacement, tout en renommant votre fichier. Par exemple :

mv /ancien/emplacement/ancien_nom.txt /nouvel/emplacement/nouveau_nom.txt

Vous pouvez utiliser mv pour renommer un répertoire de la même manière que pour un fichier :

mv /emplacement/ancien_nom_répertoire /emplacement/nouveau_nom_répertoire

Renommer plusieurs fichiers avec mv

La commande mv ne peut renommer qu’un seul fichier à la fois. Mais vous cherchez peut-être à renommer plusieurs fichiers en une seule fois. C’est là que ça se corse ! En effet, pour réaliser cette tâche avec mv, vous devez l’utiliser en combinaison avec une boucle for ou une recherche find pour renommer plusieurs fichiers simultanément.

Par exemple, nous allons utiliser une boucle for pour modifier l’extension de plusieurs fichiers .html en .old :

for f in *.html; do
    mv -- "$f" "${f%.html}.old"
done

Analysons le code ligne à ligne :

  • La première ligne créée une boucle for et itère tous les fichiers qui se terminent par l’extension .html.
  • La deuxième ligne s’applique à chaque itération et renomme chaque fichier en modifiant l’extension .html à .old.
  • done indique la fin de la boucle

Ce deuxième exemple montre le même exemple avec l’utilisation de find en combinaison avec mv :

find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.old"' \;

La commande find recherche tous les fichiers se terminant par .html dans le répertoire courant. Ensuite, -exec exécute la commande mv sur tous les fichiers qui correspondent à la recherche.

Comme vous pouvez le voir, l’utilisation de mv pour renommer plusieurs fichiers n’est pas simple et nécessite de bonnes compétences en bash.

Les options courantes à utiliser avec mv

Voici quelques options à utiliser avec la commande mv :

  • -i : affiche un message d’avertissement avant d’écraser un fichier
  • -f : ne demande pas de confirmation avant d’écraser. C’est un peu le comportement par défaut de mv.
  • -v : affiche ce que la commande a effectué

⚠️ Attention : Si vous utilisez les options -f et -i simultanément, la dernière option spécifiée prendra le dessus.

Pour en savoir plus sur mv, je vous invite à taper man mv dans votre terminal ou à consulter le manuel des coreutils.

La commande rename pour renommer plusieurs fichiers sur Linux

rename est une alternative à mv pour renommer plusieurs fichiers basée sur les expressions Perl. Une fois sa syntaxe maîtrisée, elle sera plus puissante et plus simple à utiliser pour ce type d’opération.

Tout d’abord, installez le paquet rename. Sur Debian :

sudo apt install rename 

Vous pourrez ensuite utiliser rename. Voici quelques exemples. On commence par renommer tous les fichiers .pdf en .txt situés dans un répertoire :

rename -v 's/.pdf/.txt/' *.pdf

Pour tester le résultat de la commande sans renommer vos fichiers, utilisez l’option -n :

rename -n 's/.txt/.pdf/' *.txt

Remplacer une partie d’un nom de fichier. Par exemple, « fichier » par « file » de tous les .txt :

rename -v 's/fichier/file/' *.txt

Convertir les noms de fichiers en majuscules d’un répertoire :

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

Convertir les noms de fichiers en minuscule d’un répertoire :

rename -v 'y/A-Z/a-z/' *
Partagez cet article

Avez-vous trouvé cet article utile ?
Article utile ?

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *