Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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