Forum Astuces.divers modifier des chaines de caractere avec sed

Posté par  .
Étiquettes : aucune
0
20
nov.
2008
Bonjour.

Il m'arrive souvent, lorsque je veux faire une conversion de photos, par exemple de JPG vers PNG, d'utiliser sed et ImageMagick.

J'utilise alors le code suivant :


for i in *.JPG ; do
echo "conversion de ${i} au format PNG"
convert ${i} $(echo $i | sed "s/.JPG/.png/g") ;
done ;

C'est donc intéressant d'utiliser sed, mais j'ai l'impression que c'est un peu redondant de passer par la commande echo pour modifier l'identifiant.

Cependant, j'ai cherché dans le manuel de Sed, et je n'ai pas trouvé d'option permettant de réaliser l'opération directement sur une variable du shell.

Avez vous la solution s'il vous plaît ?


Merci beaucoup pour votre aide.


David Kremer
  • # man bash

    Posté par  (site web personnel) . Évalué à 8.

    Ton shell sait le faire (sans avoir à utiliser echo, ni même sed) :
    convert ${i} ${i/.JPG/.png}

    (marche au moins avec bash et zsh)
    • [^] # Re: man bash

      Posté par  . Évalué à 8.

      Et comme les extensions sont à la fin du nom de fichier on peut même utiliser la variante
      ${i%.JPG}.png
      qui ne retire que de la fin du texte.
      • [^] # Re: man bash

        Posté par  . Évalué à 2.

        Merci beaucoup, c'est génial.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.