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

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.

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

La commande

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

Aussi faisable avec awk.

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

Merci encore.

salut,

profitons des possibilités de bash :

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

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

tout est dans le man ! :laughing:
${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=“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.