• # En shell ...

    Posté par  . Évalué à 3.

    Si tu as des numéros à la fin de tes fichiers :

    $ ./commande *[13579].png

    Sinon

    echo *.png | while read i j ; do ./commande $i ; done

    Ca devrait suffire.
    • [^] # Re: En shell ...

      Posté par  . Évalué à 1.

      echo *.png | while read i j ; do ./commande $i ; done
      Ca ne marche pas. 'echo' affiche tout en une seule ligne et d'après la doc de read : "Une ligne est lue depuis l'entrée standard, puis le premier mot de cette ligne est affecté au premier nom, le second mot au second nom, et ainsi de suite. Les mots restants sont affectés au dernier nom."
      De toute façon, cette solution ne gèrerait pas correctement les noms de fichiers avec des espaces.

      Je vois 2 solutions :
      1. Le plus efficace, s'il n'y a pas trop de fichier et si <command> accepte plusieurs fichiers en ligne de commande :
      ( IFS=$'\n'; <command> `ls | sed -n 'N;P'` )
      2. Sinon :
      ls | sed -n 'N;P' | while read; do <command> "$REPLY"; done
      • [^] # pourquoi faire simple ....

        Posté par  . Évalué à 2.

        en ksh (j'ai pas de bash sous la main mais ça doit être possible:


        #!/bin/ksh

        COUNT=0
        for i in *.png
        do
        [ $((COUNT%2)) = 0 ] &&
        {
        echo "$i"
        }
        COUNT=$((COUNT+1))
        done


        Ca marche avec les fichiers contenant des espaces.
        • [^] # Re: pourquoi faire simple ....

          Posté par  . Évalué à 2.

          Juste une question: comment sont nommés tes fichiers? Il y aura certainement une adaptation a faire. Par exemple si tes fchiers sont numerotes tu peux faire simplement : for i in *[13579].png do [ action ] done Je me suis inspiré de la première réponse.

Suivre le flux des commentaires

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