356 votes

Comment parcourir les noms de fichiers renvoyés par find ?

x=$(find . -name "*.txt")
echo $x

si j'exécute le code ci-dessus dans le shell Bash, ce que j'obtiens est une chaîne contenant plusieurs noms de fichiers séparés par des blancs, pas une liste.

Bien sûr, je peux encore les séparer par des blancs pour obtenir une liste, mais je suis sûr qu'il existe une meilleure façon de le faire.

Alors, quelle est la meilleure façon de parcourir les résultats d'une commande find ?

12voto

user569825 Points 1028

(Mise à jour pour inclure l'excellente amélioration de la vitesse de @Socowi)

Avec tout $SHELL qui le supporte (dash/zsh/bash...) :

 find . -name "*.txt" -exec $SHELL -c '
    for i in "$@" ; do
        echo "$i"
    done
' {} +

Fait.


Réponse originale (plus courte, mais plus lente) :

 find . -name "*.txt" -exec $SHELL -c '
    echo "$0"
' {} \;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X