• [^] # Re: Ca passera pas

    Posté par . En réponse au message Ligne de commande pour modifier un nom de fichier. Évalué à 5.

    D'abord je me corrige, la commande à utiliser est xargs et non xarg...

    Le pipe: | est une redirection de flux de sortie de la commande se trouvant à sa gauche vers l'entrée de la commande se trouvant à sa droite, ex:

    frbn@deb:~$ find /usr/include -name string.h
    /usr/include/asm/string.h
    /usr/include/bits/string.h
    /usr/include/string.h
    ...


    si tu veux faire quelquechose avec ce que te renvoie la commande
    tu utilises le pipe:

    frbn@deb:~$ find /usr/include -name string.h | xargs du -h
    12K /usr/include/asm/string.h
    24K /usr/include/bits/string.h
    16K /usr/include/string.h
    ...


    La variable d'environnement IFS gère ce qui délimite les éléments d'une sélection par exemple dans une boucle for/do/done:

    $ ll
    total 0
    -rw-r--r-- 1 frbn frbn 0 2006年03月15日 00:01 le_gros_truc
    -rw-r--r-- 1 frbn frbn 0 2006年03月15日 00:01 le_petit_troc
    -rw-r--r-- 1 frbn frbn 0 2006年03月15日 00:01 le petit truc

    $ for i in $(ls); do echo $i; done
    le_gros_truc
    le_petit_troc
    le
    petit
    truc

    tu remarqueras le fichier dont le nom contient des espaces n'est pas correctement sélectionné

    $ IFS=$'\n';for i in $(ls); do echo $i; done
    le_gros_truc
    le_petit_troc
    le petit truc

    là on est bon.

    Pour l'utilisation de rename, il est préférable de connaître les expressions rationnelle ou "régulières", j'utilise souvent un truc du genre de:
    rename 's/é/e/g' *.txt
    qui remplace tous les é par des e dans les fichiers, dont le nom se termine par .txt, du dossier courant...