[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash et les expaces dans les noms de fichiers



Le 12/02/2013 19:01, Philippe Delavalade a écrit :
> Bonjour.
>
> J'ai un pépertoire qui contient des sous-répertoires ; dans chacun de ces
> derniers j'ai des fichiers sur lesquels je veux faire des opérations
> (toujours les mêmes).
>
> J'ai donc envisagé un script du genre
>
> for dir in `find -mindetph 1 -type d`
> do
>   pushd "$dir"
>   commande1
>   ...
>   commanden
>   popd
> done
>
> l'option -mindepth est là pour éviter les soucis avec ./
>
> Seulement ça ne marche pas car certains des sous-répertoires comporte une
> espace (ou plusieurs) dans leur nom.

ton find sort les résultats comme il faut, mais après 'in' ne sait plus
faire la différence entre les espaces séparant les résultats de find et
ceux qui sont dans les noms de répertoire.

mais une bonne pipe (;-p) et tout est repeuplé :

find ... | while read dir; do
    macommande      "$dir"
   ...
done


bien sûr, le défaut est que les actions sont dans un sous shell (elles
sont sous la pipe;-p). donc ça marche pas si tu veux que ta commande aie
une action sur ton shell courant. on s'en sort avec des echo foobar dans
le fils, que le père (ou la mère?) interprète et exécute.




Reply to: