Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:smolski:tutos:script-renames [19/09/2020 09:48] smolski [Scripts find + rename] |
utilisateurs:smolski:tutos:script-renames [04/10/2020 07:47] (Version actuelle) smolski [Scripts - renommer fichiers et répertoires] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Script rename ====== | + | ====== Scripts - renommer fichiers et répertoires ====== |
- | * Objet : Des scripts pour renommer des séries de répertoires | + | * Objet : Scripts pour renommer des séries de répertoires et fichiers |
* Niveau requis : {{tag>débutant avisé}} | * Niveau requis : {{tag>débutant avisé}} | ||
- | * Commentaires : //À l'occasion d'une remise à plat de ma cinémathèque, je me trouve à devoir homogénéïser le nom des fiechiers et répetoires des films présents sur divers disques. // | + | * 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à !.]] :-) | * 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]] | ||
- | <note warning>warning - Pas fini</note> | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | En cas de modification des noms de fichiers et répertoires : | + | <note warning> |
+ | - 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é. | ||
+ | </note> | ||
- | <note warning>Il est dangereux d'utiliser des scripts dont on ne connaît pas la provenance. | + | ===== Scripts find + rename ===== |
- | Il est dangereux d'utiliser des scripts sans les tester sur une petite sav. | + | |
- | Il est préférable d'avoir des sav abondantes de ce que l'on va renommer, quitte après de s'en débarrasser une fois le travail fait et vérifié.</note> | + | |
- | ===== Installation ===== | + | Exemple d'utilisation de find et rename pour renommer en masse des fichiers et des dossiers. |
- | On installe le paquet rename : | + | ==== 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]] | D'abord mettre à jour ses paquets, voir [[doc:systeme:apt|les outils apt pour plus d'explications]] | ||
- | <code root>apt update 11 apt full-upgrade</code> | + | <code root>apt update && apt full-upgrade</code> |
- | Et installer le bouzin : | + | Et installer les 2 paquets : |
- | <code root>apt install rename</code> | + | <code root>apt install rename find</code> |
- | ===== Scripts find + rename ===== | + | <note important>Documentation find : [[doc:systeme:find|dans le tuto find]].</note> |
+ | |||
+ | ==== 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. | ||
+ | |||
+ | <note info>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.</note> | ||
+ | |||
+ | === Remplacer les espaces et apostrophes === | ||
+ | |||
+ | Pour remplacer les espaces et les apostrophes par, respectivement, des ''_'' et des ''-'' dans les noms de fichiers/dossiers. | ||
+ | |||
+ | <code user>find /mnt/bla/ -depth -execdir rename "y/ '/_-/" "{}" \;</code> | ||
+ | |||
+ | === Supprimer les parenthèses === | ||
+ | |||
+ | Pour supprimer les parenthèses dans les noms de fichiers/dossiers. | ||
+ | |||
+ | <code user>find /mnt/bla/ -depth -execdir rename "s/[\)\(]//g" "{}" \;</code> | ||
+ | |||
+ | === Mettre en majuscule la première lettre === | ||
+ | |||
+ | Pour mettre la première lettre en majuscule dans les noms de fichiers/dossiers. | ||
- | Documentation find : [[doc:systeme:find|dans le tuto find]]. | + | <code user>find /mnt/bla/ -depth -execdir rename "s/^\.\/(.)/.\/\U\$1/" "{}" \;</code> |
- | Suite à un repositionnement des titres d'une liste de films il me faut renommer les titres façon ligne de commande en supprimant tous les aspects purement littéraux qui falsifieraient la commande par elle-même. | + | === Tout d'un coup === |
- | ==== Espaces ==== | + | Pour enchaîner toutes les substitutions en une seule commande : |
- | * Remplacer les espaces par un underscore (ou Tirets bas en fr) : '' _'' et les apostrophes par un petit tiret '' - '' dans le dossier nommé /bla/ et ses sous-répertoires :<code user>find /bla/ -depth -execdir rename "y/'/_-/" "{}" \;</code> | + | <code user>find /mnt/bla/ -depth -execdir rename "y/ '/_-/;s/[\)\(]//g;s/^\.\/(.)/.\/\U\$1/" "{}" \;</code> |
- | * Supprimer les parenthèses dans /bla/ et ses sous-répertoires :<code user>find /bla/ -depth -execdir rename "s/[\)\(]//g" "{}" \;</code> | + | |
- | * Mettre en majuscule la première lettre des fichiers/dossiers d'un répertoire nommé /bla/ et de ses sous-répertoires :<code user>find /bla/ -depth -execdir rename "s/^\.\/(.)/.\/\U\$1/" "{}" \;</code> | + | |
- | * Combinaison de ces 3 codes :<code user>find /bla/ -depth -execdir rename "y/ '/_-/;s/[\)\(]//g;s/^\.\/(.)/.\/\U\$1/" "{}" \;</code> | + | |