#1 Le 05/03/2012, à 17:36
- el_profesor
[Résolu] Script modification nom de fichiers
Bonjour,
J'ai plusieurs fichiers ayant comme nom toto_titi_tata_2005.txt par exemple. Je souhaiterais supprimer de maniére automatique _2005 pour qu'au final le nom de mon fichier soit toto_titi_tata.txt
Ma commande que je tape pour le moment est :
for fichiers in * ; do mv "$fichiers" `echo $fichiers | tr -d "_1-9" `; done
Sauf que cette ligne me supprimer tous les _ et tous les chiffres pouvant être avant.
Avez-vous une idée de comment procéder ?
Merci.
Dernière modification par el_profesor (Le 06/03/2012, à 10:39)
Hors ligne
#2 Le 05/03/2012, à 17:41
- sputnick
Re : [Résolu] Script modification nom de fichiers
Oui,
prename 's/_\d+//' *
Dernière modification par sputnick (Le 05/03/2012, à 17:42)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 06/03/2012, à 10:38
- el_profesor
Re : [Résolu] Script modification nom de fichiers
Niquel ça fonctionne. Je vais chercher ce que fais exactement la commande ... Sinon je veux bien une petite explication sur la signification de tout ce qu'il y a entre ' ' ...
Merci pour ton aide !
Hors ligne
#4 Le 06/03/2012, à 16:46
- sputnick
Re : [Résolu] Script modification nom de fichiers
prename # la commande (perl)
s/ # substitution typique perl, sed etc... s///
_ # underscore
\d # \d c'est comme [0-9] (pcre et perl), c'est un caractère chiffre de 0 à 9
+ # Le + veut dire qu'il doit y avoir au moins un chiffre. (toutes regex tous langages, parfois protégé avec un \)
// # Enfin on remplace par rien, donc on efface.
* # le glob (tous les fichiers)
Globs : http://mywiki.wooledge.org/glob
Dernière modification par sputnick (Le 06/03/2012, à 18:33)
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne