Le « + » a (à peu près) le même effet qu'un pipe vers xargs ; pour voir la différence avec le «\;», compare
find ~/ -exec echo Echo {} \; | grep -c ^Echo
find ~/ -exec echo Echo {} + | grep -c ^Echo
find ~/ | xargs echo Echo | grep -c ^Echo
Les deux dernières regrouperont les arguments trouvés par find.
On peut même mettre plusieurs blocs -exec ... + à la suite, mais si tu veux une séquence logique, il vaut mieux écrire un script capable de traiter plusieurs arguments à la fois :
... -exec ton_script.sh {} +
Sinon, il faut répéter l'argument
... -exec sh -c "echo A "{}"; echo B "{} \;
(le + n'est utilisable qu'avec un seul {} à la fin).
Si, la redirection peut être écrite n'importe où (en dehors d'une chaîne de caractères). Si tu veux la limiter à la commande en -exec, il faut utiliser le sh -c "sous-script shell avec ses redirections".
[^] # Re: 2 ou 3 choses
Posté par Jacques L'helgoualc'h (site web personnel) . En réponse au message Fichier de trace. Évalué à 1.
find ~/ -exec echo Echo {} \; | grep -c ^Echo
find ~/ -exec echo Echo {} + | grep -c ^Echo
find ~/ | xargs echo Echo | grep -c ^Echo
Les deux dernières regrouperont les arguments trouvés par find.
On peut même mettre plusieurs blocs -exec ... + à la suite, mais si tu veux une séquence logique, il vaut mieux écrire un script capable de traiter plusieurs arguments à la fois :
... -exec ton_script.sh {} +
Sinon, il faut répéter l'argument
... -exec sh -c "echo A "{}"; echo B "{} \;
(le + n'est utilisable qu'avec un seul {} à la fin).
Si, la redirection peut être écrite n'importe où (en dehors d'une chaîne de caractères). Si tu veux la limiter à la commande en -exec, il faut utiliser le sh -c "sous-script shell avec ses redirections".