• # sh 101

    Posté par (courriel, site web personnel) . En réponse au message Éviter les boucles avec des syntaxes de gourou. Évalué à 7.

    Premièrement, tu peux faire ton for sur une seule ligne :

    $ for f in *.jpg ; do frob $f ; done
    

    Deuxièmement, tu peux faire des commandes de plusieurs lignes dans le shell interactif :

    $ for f in *.jpg
    > do
    > frob $f
    > done
    

    Troisièmement, le *.jpg va pauser des problèmes si tu as vraiment beaucoup d'images. Tu peux résoudre le problème en utilisant find comme mentionné ci-dessus.

    Quatrièmement, tu peux diminuer significativement le temps d'exécution en consommant plus de CPU en parallélisant le tout :

    $ find . -name '*.jpg' -print0 | xargs -0 -P 42 -I F -n 1 frob F
    

    Il y a aussi GNU Parallel qui peut être utile mais tout ce que j'en connais vient de dépèches DLFP : http://www.gnu.org/software/parallel/

    Tous ces exemples supposent l'utilisation de Bash, GNU coreutils et GNU find.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.