Bonsoir à tous,
j'ai qq fichiers dans un répertoire et je veux supprimer dans le nom des fichiers tout ce qui est après une chaîne de caractère précise.
exemple de nom de fichier : cars&max=250&adv_g=&adv_age=7&adv_so
qui doit devenir : cars
à chaque fois la partie à supprimer commence par &max=250
je suis novice, j'essaie avec "for i in", j'ai trouvé comment supprimer des trucs au début des noms de fichiers mais pas à la fin. J'ai l'impression que le & dérange les commandes.
Merci d'avance pour votre aide
# oups
Posté par jeanjan . Évalué à 1.
[^] # Re: oups
Posté par aurel (site web personnel, Mastodon) . Évalué à 3.
[^] # Re: retirer une chaîne de caractère à la fin du nom de fichier
Posté par jeanjan . Évalué à 1.
mv: `cars&max=250&adv_g=&adv_age=7&adv_so' `cars&max=250&adv_g=&adv_age=7&adv_so' are the same file
[^] # Re: retirer une chaîne de caractère à la fin du nom de fichier
Posté par JJD . Évalué à 2.
Tu peux essayer avec ça :
for f in *\&max=250* ; do cp "$f" "${f%%&max=250*}" ; done
A+
JJD
[^] # Re: retirer une chaîne de caractère à la fin du nom de fichier
Posté par Steve Azriel . Évalué à 1.
Cela devrait mieux fonctionner avec "&max=.*" dans la commande sed:
Ainsi:
deviendrait
Bon courage !
Cdlt,
PS: Pour faire un nettoyage du nom du fichier par rapport au premier '&' trouvé, sed est encore un bon camarade:
A tester avant toute intégration :-)
[^] # Re: retirer une chaîne de caractère à la fin du nom de fichier
Posté par jeanjan . Évalué à 1.
j'ai changé
for f in *\&max=250* ; do cp "$f" "${f%%&max=250*}" ; done
par
for f in *\&max=250* ; do mv "$f" "${f%%&max=250*}" ; done
car sinon il restait les fichiers d'origine
et pour l'autre technique, c'est tout bon avec ça :
for i in *;
do
NEWNAME=`echo "$i" | sed -e "s/&max=.*$//g"`;
mv -f $i $NEWNAME;
done
Merci beaucoup et bon dimanche :)
# rename
Posté par B. franck . Évalué à 3.
bon ok rename c'est du perl, mais il y a de grandes chances de le trouver dans la plupart des distributions.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.