Aller au contenu principal

renommer-fichier

Renommer des fichiers avec la commande mv

La commande mv (abréviation de move) permet de renommer ou de déplacer des fichiers d'un emplacement à un autre. La syntaxe de la commande mv est la suivante :

mv [OPTIONS] source destination

La source peut être un ou plusieurs fichiers ou répertoires et la destination peut être un seul fichier ou répertoire.

  • Si vous spécifiez plusieurs fichiers comme source, la destination doit être un répertoire. Dans ce cas, les fichiers sources sont déplacés vers le répertoire cible.
  • Si vous spécifiez un seul fichier comme source et que la cible de destination est un répertoire existant, le fichier est déplacé vers le répertoire spécifié.
  • Pour renommer un fichier, vous devez spécifier un seul fichier comme source et un seul fichier comme cible de destination.

Par exemple, pour renommer le fichier fichier1.txt en fichier2.txt, vous devez exécuter :

vm file1.txt file2.txt

Renommer plusieurs fichiers avec la commande mv

La commande mv ne peut renommer qu'un seul fichier à la fois, mais elle peut être utilisée en conjonction avec d'autres commandes telles que find ou à l'intérieur des boucles bash for ou while pour renommer plusieurs fichiers.

L'exemple suivant montre comment utiliser la boucle Bash for pour renommer tous les fichiers .html du répertoire actuel en changeant l'extension .html en .php.

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

Analysons le code ligne par ligne :

  • La première ligne crée une boucle for et parcourt une liste de tous les fichiers bordés de .html
  • La deuxième ligne s'applique à chaque élément de la liste et déplace le fichier vers un nouveau en remplaçant .html par .php. La partie file.html utilise l'extension des paramètres du shell pour supprimer la partie .html du nom de fichier.
  • done indique la fin du segment de boucle.

Voici un exemple utilisant mv en combinaison avec find pour obtenir le même résultat que ci-dessus :

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

La commande find transmet tous les fichiers se terminant par .html dans le répertoire courant à mv un par un à l'aide de l'option -exec. La chaîne est le nom du fichier en cours de traitement.

Comme vous pouvez le voir dans les exemples ci-dessus, renommer plusieurs fichiers à l'aide de la commande mv n'est pas une tâche facile car elle nécessite une bonne connaissance des scripts Bash.

Renommer des fichiers avec la commande rename

La commande rename permet de renommé plusieurs fichiers. Cette commande est plus avancée que mv car elle nécessite quelques connaissances de base sur les expressions régulières.

Il existe deux versions de la commande rename avec une syntaxe différente. Dans ce tutoriel, nous utiliserons la version Perl de la commande rename. Si cette version n'est pas installée sur votre système, vous pouvez facilement l'installer en utilisant le gestionnaire de paquets de votre distribution.

Installer rename sur Ubuntu et Debian

sudo apt install rename

Installer rename sur CentOS et Fedora

sudo yum install prename

Installer rename sur Arch Linux

yay perl-rename ## or yaourt -S perl-rename

La syntaxe de la commande rename est la suivante :

rename [OPTIONS] perlexpr files

La commande rename renomme les fichiers (files) selon l'expression régulière perlexpr spécifiée. Vous pouvez en savoir plus sur les expressions régulières perl ici .

L'exemple suivant changera tous les fichiers avec l'extension .html en .php :

rename 's/.html/.php/' \*.html

Vous pouvez utiliser l'option -n pour imprimer les noms des fichiers à renommer, sans les renommer.

rename -n 's/.html/.php/' \*.html
rename(file-90.html, file-90.php)
rename(file-91.html, file-91.php)
rename(file-92.html, file-92.php)
rename(file-93.html, file-93.php)
rename(file-94.html, file-94.php)

Par défaut, la commande rename n'écrase pas les fichiers existants. Passez l'option -f pour autoriser l'écrasement des fichiers existants :

rename -f 's/.html/.php/' \*.html

Vous trouverez ci-dessous quelques exemples plus courants d’utilisation de la commande rename :

Remplacer les espaces dans les noms de fichiers par des traits de soulignement

rename 'y/ /\_/' \*

Convertir les noms de fichiers en minuscules

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

Convertir les noms de fichiers en majuscules

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

Conclusion

Nous vous avons montré comment utiliser les commandes mv et rename pour renommer des fichiers.

Il existe également d'autres commandes pour renommer des fichiers sous Linux, telles que mmv . Les nouveaux utilisateurs de Linux qui sont intimidés par la ligne de commande peuvent utiliser des outils de renommage par lots à interface graphique tels que Métamorphose