# BASH : Renommer un lot d'image en ligne de commande

**URL:** <https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 9:52 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771 "2016-02-21T21:52:21Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![fluo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/e9bcb4/32.png) [@fluo](https://www.debian-fr.org/u/fluo)\
**Post date:** [Février 21, 2016, 9:52 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771/1 "2016-02-21T21:52:21Z")

</div>

Bonjour,

je voudrais renommer en ligne de commande un lot d’images qui se trouve dans un dossier.

Les images ont des noms comme :  
toto.png.pagespeed.ae.zoUdNqrkza.png  
azo.png.pagespeed.1e.zoUdNqrk122.png  
za44az.png.pagespeed.bb.zoUdNqraaM.png  
…

Lors du renommage, je voudrais que la ligne de commande supprime la partie finale pagespeed.xx.xxxxxxx.png (tous les caractères qui se trouvent après la 1ère occurence .png), pour qu’on ai au final :  
toto.png  
azo.png  
za44az.png  
…

Une idée ? Merci d’avance, cordialement.

---

<div class="post-metadata">

**Author:** ![Arnaud](https://www.debian-fr.org/user_avatar/www.debian-fr.org/arnaud/32/4098_2.png) [@Arnaud](https://www.debian-fr.org/u/Arnaud)\
**Post date:** [Février 21, 2016, 9:52 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771/2 "2016-02-21T21:52:22Z")

</div>

Une simple copie pour commencer ( tu peux remplacer par mv pour être définitif ) :

```auto

```

La commande

```auto

```

permet de récupérer toto.png ( séparateur . et on choisit les deux premiers champs ).

Aussi faisable avec awk.

---

<div class="post-metadata">

**Author:** ![fluo](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/f/e9bcb4/32.png) [@fluo](https://www.debian-fr.org/u/fluo)\
**Post date:** [Février 21, 2016, 9:52 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771/3 "2016-02-21T21:52:22Z")

</div>

Merci beaucoup.  
Avec cp, je conserve en plus l’original.

Merci encore.

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 9:52 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771/4 "2016-02-21T21:52:59Z")

</div>

salut,

profitons des possibilités de bash :

```auto

```

ce serait “plus simple” (pas de boucle) avec rename; il faut trouver la bonne regex…

---

<div class="post-metadata">

**Author:** ![Mimoza](https://www.debian-fr.org/user_avatar/www.debian-fr.org/mimoza/32/3858_2.png) [@Mimoza](https://www.debian-fr.org/u/Mimoza)\
**Post date:** [Février 21, 2016, 9:53 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771/5 "2016-02-21T21:53:00Z")

</div>

Une petite explication ne serait pas de trop car là c’est assez cryptique comme expression 😕

> [@](#):
>
> «&nbsp;${f%%${f#\*.png}}&nbsp;»

---

<div class="post-metadata">

**Author:** ![Watael](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/w/a4c791/32.png) [@Watael](https://www.debian-fr.org/u/Watael)\
**Post date:** [Février 21, 2016, 9:53 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771/6 "2016-02-21T21:53:03Z")

</div>

tout est dans le man ! 😆  
${f#\*.png} : enlève du nom du fichier f tout ce qu’il y a avant, et y compris, le premier .png  
${f%%${f#\*.png}} : enlève ce qui qu’il reste de l’opération précédente, à la fin du nom du fichier f

---

<div class="post-metadata">

**Author:** ![Arnaud](https://www.debian-fr.org/user_avatar/www.debian-fr.org/arnaud/32/4098_2.png) [@Arnaud](https://www.debian-fr.org/u/Arnaud)\
**Post date:** [Février 21, 2016, 9:53 UTC](https://www.debian-fr.org/t/bash-renommer-un-lot-dimage-en-ligne-de-commande/66771/7 "2016-02-21T21:53:04Z")

</div>

[quote=“Watael”]  
${f#\*.png} : enlève du nom du fichier f tout ce qu’il y a avant, et y compris, le premier .png  
${f%%${f#\*.png}} : enlève ce qui qu’il reste de l’opération précédente, à la fin du nom du fichier f[/quote]

Merci pour l’explication.
