# Script Perl pour renommer le nom de plusieurs fichiers

**URL:** <https://www.debian-fr.org/t/script-perl-pour-renommer-le-nom-de-plusieurs-fichiers/62494>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/script-perl-pour-renommer-le-nom-de-plusieurs-fichiers/62494 "2016-02-21T20:25:25Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Eric75](https://www.debian-fr.org/user_avatar/www.debian-fr.org/eric75/32/4483_2.png) [@Eric75](https://www.debian-fr.org/u/Eric75)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/script-perl-pour-renommer-le-nom-de-plusieurs-fichiers/62494/1 "2016-02-21T20:25:25Z")

</div>

Bonjour à tous,

Je suis un débutant de chez Débutant en Perl et je souhaite faire un script qui me permettrait, dans un même répertoire, de renommer le nom de tous les fichiers correspondants à tel pattern, en insérant un ou plusieurs caractère(s) à la Nième position :  
[ul]Avant = NomDuFichier1.jpg  
Après = NomDuFichier001.jpg[/ul]

En gros, au vu de mes maigres connaissances je verrais l’algo suivant :

`début
  demander le pattern à trouver dans le nom des fichiers > ficPattern
  demander le ou les caractère(s) à insérer > carInsert
  demander la position d'insertion > posInsert
  pour tous les fichiers *ficPattern* alors
    renommer fichier en insérant à la position posInsert le caractère carInsert
  fichier suivant
fin`  
Mon raisonnement est-il correct ?  
Et si oui, comment réaliser :  
1°) la partie boucle ? (en Shell, je ferais un for i in _pattern_; do; done mais en Perl ?)  
2°) la manipulation/substitution sur le nom du fichier ? (que je ne sais pas faire non plus en Shell : je sais renommer, mais pas en insérant un caractère à le Nième position)

Sinon, quelle serait d’après vous le meilleure méthode pour arriver à ce résultat, svp ?

Je vous remercie d’avance pour votre aide,  
Cordialement.  
Eric

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/script-perl-pour-renommer-le-nom-de-plusieurs-fichiers/62494/2 "2016-02-21T20:25:26Z")

</div>

Le plus simple c’est de lister tous les fichiers du répertoire et ceux qui correspondent au patterne sont renommés.  
Pour les manipulations de chaînes, tu peux regarder la méthode [mono]substr()[/mono].

---

<div class="post-metadata">

**Author:** ![Eric75](https://www.debian-fr.org/user_avatar/www.debian-fr.org/eric75/32/4483_2.png) [@Eric75](https://www.debian-fr.org/u/Eric75)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/script-perl-pour-renommer-le-nom-de-plusieurs-fichiers/62494/3 "2016-02-21T20:25:27Z")

</div>

Merci MisterFreez pour ta réponse.

J’ai étudié ta fonction substr() [ici](http://perldoc.perl.org/functions/substr.html).  
Je sais donc maintenant extraire des caractères dans une chaîne, en substituer à d’autres ou en ajouter à la fin, mais je ne comprends pas comment avec cette fonction insérer un caractère dans une chaîne sans en perdre la fin.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 8:25 UTC](https://www.debian-fr.org/t/script-perl-pour-renommer-le-nom-de-plusieurs-fichiers/62494/4 "2016-02-21T20:25:27Z")

</div>

Tu peut concaténer : le début de ta chaîne, puis les caractères à insérer et enfin la fin de la chaine.
