Re: shell

Top Page

Reply to this message
Author: nt.guilde
Date:  
To: guilde
CC: guilde
Subject: Re: shell
>Je n'ai pas réussi à reproduire l'erreur??? :-(
>Peut-être aussi que cela dépend du shell utilisé (j'avais eu l'erreur
>sur un serveur Sun) ?


Te rappelles-tu du shell ?

>Un collègue de l'époque m'a alors indiqué une solution, qui marche et
>que j'ai gardée depuis, pour traiter une liste de *fichiers* d'une
>arborescence (pas les liens, pas les répertoires???).
>La voici:
>find . -type f -print | while read fichier ; do...


Si les noms de fichiers contiennent des espaces, 'read' lira des morceaux ;
ceci est mieux :

find . -type f -print | while IFS= read fichier ; do...

Mais il y a un autre problème : les commandes qui suivent 'do' ont leur
stdin connecté à la pipe, ce qui n'est pas le cas dans le cas du
'for i in...' ; donc :

exec 3<&0
find . -type f -print | while IFS= read fichier ; do
{ ... } <&3 3<&-
done
exec 3<&-

Autres possibilités :

find . -type f -exec command {} \;
find . -type f -exec command {} +
find . -type f -exec sh -c 'command "$0"' {} \;
find . -type f -exec sh -c 'command "$@"' nil {} +

Les deux dernières pour le cas où 'command' est composée.
"Bien que tout ceci soit faux, je ne le garantis pas."
-Nicolas T.