janvier 1, 2022

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.

Les exemples de ce guide sont utilisés pour renommer tous les fichiers de votre répertoire de travail actuel. La plupart de ces commandes peuvent facilement être modifiées pour fonctionner récursivement. Notez que certains exemples renommeront également des répertoires.

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
Utilisez l’option -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
Utilisez l’option -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.

 Ouverture de l'utilitaire de renommage en masse

Étape 2. Cliquez sur le signe plus pour ajouter des fichiers que vous souhaitez renommer.

 Ajout d'une liste de fichiers à l'application de renommage en masse

É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.

 Outil de renommage en bloc affichant les anciens noms et les nouveaux noms de 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.

 Finaliser le travail de 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.