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
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/' *