====== rename ======
* Objet : Commande rename
* Niveau requis :{{tag>débutant avisé}}
* Commentaires : // Modifier en série le nom des fichiers par la ligne de commande. //
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* Suivi : {{tag>à-compléter}}
* Création par [[user>smolski]] le 09/01/2013
* Testé par [[user>smolski]] le 09/01/2013
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=6382 |C'est ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
La commande rename modifie les fichiers selon la règle spécifiée comme premier argument.\\
Elle apparaît dans son utilisation comme un //mix// entre [[:doc:systeme:mv]] et [[:doc:systeme:sed]], de fait elle se justifie d'utilisation lorsque nous avons __des séries de fichiers__ à renommer plutôt qu'un seul.
===== Préalable =====
Pour les exemples de ce tuto, créez le répertoire(([[:doc:systeme:mkdir]])) //test_rename// dans votre ///home/user// ainsi :
mkdir ~/test_rename
===== Renommer un fichier =====
Maintenant, créez(([[:doc:systeme:touch]])) dans ce répertoire le fichier //nimporte// :
touch ~/test_rename/nimporte
Contrôle(([[:doc:systeme:ls]])) :
ls ~/test_rename/
nimporte
Renommez ce fichier //nimporte// en //test1// :
rename 's/nimporte/test1/' ~/test_rename/nimporte
Résultat :
ls ~/test_rename/
test1
== Nota : ==
Il est bien sûr préférable d'utiliser [[doc:systeme:mv | la commande mv]] pour faire cela en plus simple. :-)
===== Renommer en série =====
Maintenant créons dans le même répertoire test_rename __une série de fichiers__ contenant des majuscules dans leurs noms et leurs extentions :
cd ~/test_rename/
touch TEST2 TEsT3 test.JPG tESt.ODT
Contrôle :
ls
test1 TEST2 TEsT3 test.JPG tESt.ODT
Pour mettre tous les noms de tous les fichiers ainsi que toutes leurs extentions en minuscule, utilisez des expressions régulières(([[:doc:programmation:shell:regexp]] en cours d'amélioration...)) comme ceci :
rename 'y/[A-Z]/[a-z]/' *
Résultat :
ls
test1 test2 test3 test.jpg test.odt
===== Exemples =====
==== Changer les extentions de plusieurs fichiers ( .gz.1 en .gz par exemple ) ====
rename 's/\.1$//' *.gz.1
* **s** indique l'action de substitution. Cette action est constitué de deux parties. Un motif à faire correspondre et une chaîne de substitution (ou remplacement) pour ce motif. Cela veut dire qu'on va substituer le motif par la chaîne de remplacement. En résumé l'opérateur de substitution est constitué comme suit : s/MOTIF/REMPLACEMENT/.
* **\.1$** Est une regexp qui indique le texte que l'on veut modifier dans laquelle :
* **\.1** précise le texte à modifier .1 ( on utilise le \ devant le . le \. est important car dans le langage des regexp « . » désigne n'importe quel caractère.
* **$** précise que le texte ( ici .1 ) est situé a la fin ( pour éviter de changer des 1 qui seraient au milieu du mot et sans rapport avec le .gz1 )
* ***.gz.1** Dit que l'on applique la commande rename sur tous les fichiers ( * ) mais finissant par .gz.1
===== Liens =====
* [[:doc:systeme:gprename | gprename]]
* [[:doc:environnements:gnome:pyrenamer | pyrenamer]]
* [[http://debian-facile.org/viewtopic.php?id=6381 | Forum debian-facile]] //Initié par// **vince06fr** ;-)
//À suivre...//