Vous voudrez peut-être enchaîner les appels pour trouver (une fois, lorsque vous avez appris, qu'il est possible, ce qui pourrait être le cas aujourd'hui). Ceci n’est bien entendu possible que tant que vous restez en recherche. Une fois que vous dirigez votre recherche vers xargs, c'est hors de portée.
Petit exemple, deux fichiers a.lst et b.lst:
cat a.lst
fuddel.sh
fiddel.sh
cat b.lst
fuddel.sh
Aucune astuce ici - simplement le fait que les deux contiennent "fuddel" mais un seul contient "fiddel".
Supposons que nous ne le savions pas. Nous recherchons un fichier qui correspond à 2 conditions:
find -exec grep -q fuddel {} ";" -exec grep -q fiddel {} ";" -ls
192097 4 -rw-r--r-- 1 stefan stefan 20 Jun 27 17:05 ./a.lst
Eh bien, vous connaissez peut-être la syntaxe permettant à grep ou à un autre programme de transmettre les deux chaînes en tant que condition, mais ce n'est pas la question. Tous les programmes qui peuvent renvoyer true ou false, avec un fichier comme argument, peuvent être utilisés ici - grep n'était qu'un exemple populaire.
Et notez que vous pouvez suivre find -exec avec d'autres commandes find, telles que -ls ou -delete ou quelque chose de similaire. Notez que supprimer non seulement rm (supprime les fichiers), mais également rmdir (supprime les répertoires).
Une telle chaîne est lue comme une combinaison ET de commandes, tant que cela n'est pas spécifié (à savoir avec un -or
commutateur (et des parenthèses (qui doivent être masquées))).
Donc, vous ne quittez pas la chaîne de recherche, ce qui est très pratique. Je ne vois aucun avantage à utiliser -xargs, car vous devez faire preuve de prudence lors de la transmission des fichiers, ce qui n'est pas forcément une tâche inutile - il gère automatiquement la transmission de chaque fichier en tant qu'argument unique.
Si vous pensez avoir besoin d'un masque pour les accolades , n'hésitez pas à consulter ma question qui demande des preuves. Mon affirmation est la suivante: vous ne le faites pas.
find
. Merci beaucoup!