#1 Le 26/08/2008, à 09:16
- ®om
[Résolu] boucle sur un 'find' : problème avec les espaces
Salut,
Une copie du terminal vaut mieux qu'un long discours :
$ find
.
./c
./c/d e
./a b
$ for i in $(find); do echo "-- $i"; done
-- .
-- ./c
-- ./c/d
-- e
-- ./a
-- b
$ for i in "$(find)"; do echo "-- $i"; done
-- .
./c
./c/d e
./a b
$ for i in $(find -print0); do echo "-- $i"; done
-- ../c./c/d
-- e./a
-- b
$ for i in $(find -print0 | xargs -0); do echo "-- $i"; done
-- .
-- ./c
-- ./c/d
-- e
-- ./a
-- b
Je souhaiterais bien sûr que dans une boucle, chaque élément soit une ligne du find, et donc :
$ commandemagique
-- .
-- ./c
-- ./c/d e
-- ./a b
Alors, évidemment, ça ça marche :
$ find -exec echo "-- {}" \;
-- .
-- ./c
-- ./c/d e
-- ./a b
Mais je le voudrais plutôt dans une boucle.
Comment obtenir ceci?
Merci d'avance.
Dernière modification par ®om (Le 26/08/2008, à 10:17)
Hors ligne
#2 Le 26/08/2008, à 09:51
- Totor
Re : [Résolu] boucle sur un 'find' : problème avec les espaces
find|while read ligne
do
echo "-- $ligne"
done
-- Lucid Lynx --
Hors ligne
#3 Le 26/08/2008, à 10:16
- ®om
Re : [Résolu] boucle sur un 'find' : problème avec les espaces
Merci, nickel
Mais où avoir le man de read?
man read affiche le man de read() en C.
Dernière modification par ®om (Le 26/08/2008, à 10:17)
Hors ligne
#4 Le 26/08/2008, à 10:25
- Totor
Re : [Résolu] boucle sur un 'find' : problème avec les espaces
Etrange, chez moi, man read me renvoie bien sur le bon manuel qui est celui des commandes internes au bash.
Essaie man alias !
-- Lucid Lynx --
Hors ligne
#5 Le 26/08/2008, à 18:32
- Alain.g
Re : [Résolu] boucle sur un 'find' : problème avec les espaces
Pour gérer tous les types d'espace, dont le saut de ligne, il faut utiliser l'option -print0 de find :
find * -print0 | while read -rd $'\0' i ; do echo "$i" ; done
Xubuntu Karmic !
Hors ligne