Exécuter des commandes sur plusieurs fichiers : find -exec vs find xargs

De Linux Server Wiki
Aller à la navigation Aller à la recherche


find -exec

find \;

find . [args] -exec [cmd] {} \;
find . -name \*.html -type f -exec grep -Hn 'pattern' {} \;
  • {} contiendra le résultat trouvé par find
  • \; signifie que pour chaque résultat trouvé par find, la commande (grep dans l'exemple) sera exécuté une fois sur le résultat trouvé
    • Donc si find trouve 4000 fichiers, la commande (grep ici) sera exécutée 4000 fois.

find \+

find . [args] -exec [cmd] {} \+
find . -name \*.html -type f -exec grep -Hn 'pattern' {} \+
  • {} contiendra le résultat trouvé par find
  • \+ tous les résultats trouvés par find sont mergés et la commande (grep ici) n'est exécutée qu'une seule fois avec tous les résultats de find.
    • Inconvénient possible : si find trouve beaucoup de résultat, vous allez finir par atteindre ARG_LIMIT

find | xargs