Comment Renommer plusieurs fichiers à la fois sur Linux
Renommer plusieurs fichiers sur Linux semble être une tâche simple, mais cela peut devenir assez complexe. Il est possible de renommer des fichiers en masse avec la commande mv
et un peu de script Bash, ou d’utiliser les utilitaires mmv
et rename
– qui ne sont généralement pas installés par défaut. Dans ce guide, nous montrerons divers exemples pour renommer plusieurs fichiers à la fois à partir de la ligne de commande Linux.
Renommer plusieurs fichiers Avec mv
La commande mv
est une partie par défaut de Linux et peut être utilisée pour renommer plusieurs fichiers, mais un peu de script est nécessaire pour faire le travail. Certains exemples s’appuient également sur d’autres utilitaires Linux par défaut comme ls
, find
, xargs
, etc.
Exemple 1. Modifiez tous les noms de fichiers en minuscules.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'A-Z' 'a-z'`"; done
Exemple 2. Remplacez tous les noms de fichiers par des majuscules.
$ for f in `ls | grep `; do mv "$f" "`echo $f | tr 'a-z' 'A-Z'`"; done
Exemple 3. Modifiez toutes les extensions de fichier de .jpeg
à .jpg
.
$ for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done
Exemple 4. Supprimez l’extension de fichier .bak
de tous les fichiers.
$ for f in `ls *.bak`; do mv $f ${f%.*}; done
Exemple 5. Ajoutez une extension de fichier .bak
à tous les fichiers.
$ for f in `ls`; do mv $f $f.bak; done
Exemple 6. Utilisez xargs
pour ajouter « _backup » à chaque fichier.
$ ls * | xargs -I{} mv {} {}_backup
Exemple 7. Utilisez les commandes find
, sed
et mv
pour changer tous les fichiers en minuscules.
$ find . -maxdepth 1 -type f -name '**'|sed -n 's/\(.*\/\)\(.*\)/mv -n -v -T \L/p'|sh
Exemple 8. Utilisez les commandes find -exec
et mv
pour ajouter « _backup » à chaque fichier se terminant par l’extension .log
.
$ find . -type f -name "*.log" -exec mv {} {}_backup \;
Exemple 9. Similaire à l’exemple précédent, mais remplacez l’option -exec
de find par xargs
pour ajouter « _backup » à chaque fichier se terminant par l’extension .log
.
$ find . -type f -name '*log' -print0 | xargs --null -I{} mv {} {}_backup
Exemple 10. Remplacez un motif dans chaque fichier en utilisant mv
et sed
. Cela remplacera « IMG » par « Vacation » dans chaque fichier .jpg
.
$ for f in *.jpg; do mv "$f" "`echo "$f" | sed s/IMG/Vacation/`"; done
Exemple 11. Ajoutez l’horodatage actuel à tous les fichiers se terminant par .log
. Cela changerait un fichier tel que access.log
en access_20210418040151.log
.
$ for f in *.log; do mv "$f" "${f%.log}"_`date +%Y%m%d%H%M%S`.log; done
Renommer plusieurs fichiers Avec rename
L’utilitaire rename facilite un peu nos tâches de renommage en masse, mais l’utilitaire n’est pas toujours installé par défaut. Utilisez la commande appropriée ci-dessous pour l’installer avec le gestionnaire de paquets de votre système.
Ubuntu, Debian et Linux Mint:
$ sudo apt install rename
Fedora, AlmaLinux, CentOS et RHEL:
$ sudo dnf install prename
Arch Linux et Manjaro:
$ sudo pacman -S perl-rename
-n
dans vos commandes rename
si vous souhaitez prévisualiser les modifications avant de les effectuer.Exemple 1. Modifiez tous les noms de fichiers en minuscules.
$ rename 'y/A-Z/a-z/' *
Exemple 2. Remplacez tous les noms de fichiers par des majuscules.
$ rename 'y/a-z/A-Z/' *
Exemple 3. Supprimez l’extension .bak
de tous les fichiers.
$ rename 's/\.bak$//' *.bak
Exemple 4. Remplacez l’extension de tous les fichiers .jpeg
par .jpg
.
$ rename 's/\.jpeg/\.jpg/' *.jpeg
Exemple 5. Remplacez l’extension majuscule .JPG
par minuscule .jpg
pour tous les fichiers.
$ rename 's/\.JPG/\.jpg/' *.JPG
Exemple 6. Supprimez les espaces vides de tous les noms de fichiers.
$ rename "s/ *//g" *
Exemple 7. Remplacez les espaces vides par des traits de soulignement pour tous les noms de fichiers.
$ rename 's/\s+/_/g' *
Exemple 8. Mettez en majuscule la première lettre de tous les noms de fichiers.
$ rename 's/\b(\w)/\U/g' *
Exemple 9. Remplacez un motif dans chaque nom de fichier. Cette commande remplacera « IMG » par « Vacation » dans chaque fichier .jpg
.
$ rename 's/IMG/Vacation/' *.jpg
Exemple 10. Supprimer une partie d’un nom de fichier. Cette commande supprimera « IMG_ » de chaque fichier .jpg
.
$ rename 's/IMG_//' *.jpg
Exemple 11. Ajoutez l’extension .bak
à tous les fichiers.
$ rename 's/(.*)/.bak/' *
Renommer plusieurs fichiers Avec mmv
L’utilitaire mmv excelle dans le renommage de fichiers en fonction de motifs, tels que la suppression ou l’ajout de chaînes à tous les fichiers, ou la réorganisation de parties de noms de fichiers. Il n’est généralement pas installé par défaut, mais vous pouvez utiliser la commande appropriée ci-dessous pour installer mmv avec le gestionnaire de paquets de votre système.
Ubuntu, Debian et Linux Mint:
$ sudo apt install mmv
Fedora, AlmaLinux, CentOS et RHEL:
$ sudo dnf install mmv
Arch Linux et Manjaro (installation depuis AUR):
$ git clone https://aur.archlinux.org/mmv.git$ cd mmv/$ makepkg -si
-n
dans vos commandes mmv
si vous souhaitez prévisualiser les modifications avant de les effectuer. Exemple 1. Remplacez l’extension de tous les fichiers .jpeg
par .jpg
.
$ mmv '*.jpeg' '#1.jpg'
Exemple 2. Modifiez tous les noms de fichiers en minuscules.
$ mmv '*' '#l1'
Exemple 3. Remplacez tous les noms de fichiers par des majuscules.
$ mmv '*' '#u1'
Exemple 4. Réorganisez des parties d’un nom de fichier. Cette commande changera les fichiers musicaux avec le motif Song-Artist.mp3
en Artist-Song.mp3
.
$ mmv '*-*.mp3' '#2-#1.mp3'
Exemple 5. Remplacez la première occurrence de « IMG » par « Vacation » dans tous les noms de fichiers.
$ mmv '*IMG*' '#1Vacation#2'
Exemple 6. Ajoutez un préfixe à chaque nom de fichier. Cette commande ajoutera « backup_ » à chaque fichier .log
.
$ mmv '*.log' 'backup_#1.log'
Exemple 7. Ajoutez un suffixe à chaque nom de fichier. Cette commande ajoutera « _backup » à chaque fichier .log
.
$ mmv '*.log' '#1.log_backup'
Exemple 8. Supprimez le préfixe « IMG_ » de tous les fichiers .jpg
.
$ mmv 'IMG_*.jpg' '#1'
Exemple 9. Supprimez le suffixe « _old » de tous les fichiers.
$ mmv '*_old' '#1'
Renommer en masse des fichiers via l’interface graphique
Si la ligne de commande n’est pas vraiment votre truc, il est possible de renommer plusieurs fichiers à la fois via l’interface graphique. L’un des meilleurs outils pour faire le travail est l’application de renommage en masse fournie avec Thunar.
Thunar est le navigateur de fichiers par défaut pour Xfce, mais vous pouvez l’installer quel que soit l’environnement de bureau que vous utilisez. Si vous utilisez déjà Xfce ou Thunar, le renommage en bloc fait déjà partie de votre système. Sinon, utilisez la commande appropriée ci-dessous pour l’installer avec le gestionnaire de paquets de votre système.
Ubuntu, Debian et Linux Mint:
$ sudo apt install thunar
Fedora, AlmaLinux, CentOS et RHEL:
$ sudo dnf install thunar
Arch Linux et Manjaro:
$ sudo pacman -S thunar
Étape 1. Une fois Thunar installé, recherchez et ouvrez l’utilitaire de renommage en bloc.
Étape 2. Cliquez sur le signe plus pour ajouter des fichiers que vous souhaitez renommer.
Étape 3. Choisissez dans la liste des options ce que vous souhaitez faire avec les fichiers. Vous pouvez les changer tous en lettres majuscules ou minuscules, ajouter une date et une heure, insérer du texte à une certaine position, ajouter une numérotation automatique, remplacer des caractères ou rechercher et remplacer certains modèles dans les noms de fichiers, entre autres choses. Dans l’exemple ci-dessous, nous avons ajouté une extension de fichier .txt
à tous nos fichiers.
Étape 4. Lorsque vous êtes satisfait des changements de nom prévisualisés dans la colonne « Nouveau nom », cliquez sur « Renommer les fichiers » pour effectuer le renommage en masse.
Renommer plusieurs fichiers sur WSL
Si vous utilisez un sous-système Windows pour Linux, certaines commandes ci-dessus ne fonctionneront pas, en particulier celles qui impliquent de changer les fichiers en minuscules ou en majuscules. Windows est insensible à la casse, considère donc que File.txt
, file.txt
et FILE.txt
sont tous le même fichier.
Vous obtiendrez simplement une erreur indiquant que le fichier existe déjà si vous essayez de renommer FILE.txt
en file.txt
. Pour éviter ce problème, utilisez l’un des exemples suivants.
Exemple 1. Remplacez l’extension majuscule .JPG
par minuscule .jpg
pour tous les fichiers (à l’aide des utilitaires par défaut).
$ for f in *.JPG; do mv "$f" "${f%.JPG}.jpgaux"; done && for f in *.jpgaux; do mv "$f" "${f%.jpgaux}.jpg"; done
Exemple 2. Modifiez l’extension majuscule .JPG
en minuscule .jpg
pour tous les fichiers (à l’aide de l’utilitaire renommer).
$ rename 's/\.JPG$/\.jpgaux/' *.JPG && rename 's/\.jpgaux$/\.jpg/' *.jpgaux
Exemple 3. Modifiez l’extension majuscule .JPG
en minuscule .jpg
pour tous les fichiers (à l’aide de l’utilitaire mmv).
$ mmv '*.JPG' '#1.jpgaux' && mmv '*.jpgaux' '#1.jpg'
Exemple 4. Modifiez tous les noms de fichiers en minuscules (à l’aide des utilitaires par défaut).
$ for f in `ls | grep `; do mv "$f" "`echo $f.aux | tr 'A-Z' 'a-z'`"; done && for f in `ls *.aux`; do mv $f ${f%.*}; done
Exemple 5. Modifiez tous les noms de fichiers en minuscules (à l’aide de l’utilitaire mmv).
$ mmv '*' '#l1.aux' && mmv '*.aux' '#1'
Conclusion
Il est possible d’utiliser les utilitaires Bash par défaut pour tous vos renommages en masse sur Linux, mais les outils rename et mmv le rendent beaucoup plus facile. Nous pouvons également utiliser l’application de renommage en masse de Thunar lorsque nous préférons utiliser l’interface graphique plutôt que la ligne de commande. Les exemples de ce guide couvrent un large éventail de scénarios de changement de nom et peuvent être facilement adaptés pour répondre à d’autres besoins.