====== Scripts - renommer fichiers et répertoires ======
* Objet : Scripts pour renommer des séries de répertoires et fichiers
* Niveau requis : {{tag>débutant avisé}}
* Commentaires : //À l'occasion d'une remise à plat de ma cinémathèque, je me trouve à devoir homogénéiser le nom des fichiers et répertoires des films présents sur divers disques durs. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
* Lien vers le forum : [[https://debian-facile.org/viewtopic.php?pid=343422#p343422]]
===== Introduction =====
- Il est dangereux d'utiliser des scripts dont on ne connaît pas la signification ni la provenance afin de se renseigner pour leur usage perso.
- Il est dangereux d'utiliser des scripts sans les tester sur une petite sav en exemple.
- Il est préférable d'avoir des sauvegardes complètes de ce que l'on va renommer, quitte après de s'en débarrasser une fois le travail fait et vérifié.
===== Scripts find + rename =====
Exemple d'utilisation de find et rename pour renommer en masse des fichiers et des dossiers.
==== Installation ====
On installe les paquets rename et find :
D'abord mettre à jour ses paquets, voir [[doc:systeme:apt|les outils apt pour plus d'explications]]
apt update && apt full-upgrade
Et installer les 2 paquets :
apt install rename find
Documentation find : [[doc:systeme:find|dans le tuto find]].
==== Exécution ====
//(Ce titre n'est pas un vain mot, ici...)// :-D
Suite à un repositionnement de plusieurs listes de films il me faut renommer les titres en supprimant tous les aspects purement littéraux qui falsifieraient le résultat des commandes que j'utilise pour la gestion informatique de l'ensemble de la cinémathèque.
Pour l'exemple, on considérera que toute la cinémathèque est stockée dans le dossier ''/mnt/bla/'', et l'on veut renommer tous les dossiers, sous-dossiers, et leurs fichiers avec différentes contraintes.
=== Remplacer les espaces et apostrophes ===
Pour remplacer les espaces et les apostrophes par, respectivement, des ''_'' et des ''-'' dans les noms de fichiers/dossiers.
find /mnt/bla/ -depth -execdir rename "y/ '/_-/" "{}" \;
=== Supprimer les parenthèses ===
Pour supprimer les parenthèses dans les noms de fichiers/dossiers.
find /mnt/bla/ -depth -execdir rename "s/[\)\(]//g" "{}" \;
=== Mettre en majuscule la première lettre ===
Pour mettre la première lettre en majuscule dans les noms de fichiers/dossiers.
find /mnt/bla/ -depth -execdir rename "s/^\.\/(.)/.\/\U\$1/" "{}" \;
=== Tout d'un coup ===
Pour enchaîner toutes les substitutions en une seule commande :
find /mnt/bla/ -depth -execdir rename "y/ '/_-/;s/[\)\(]//g;s/^\.\/(.)/.\/\U\$1/" "{}" \;