Réponse
Tout comme -L
recherche le contenu dun fichier sans correspondance, -l
recherche le contenu dun fichier avec une correspondance.
Vous devrez donc spécifier lindicateur -l
dans le deuxième « grepping ».
De plus, vous devrez diriger la sortie du premier grep
vers le second comme arguments de ligne de commande. Cela peut être fait en utilisant xargs
, qui est un outil pour lire les éléments à partir de lentrée standard. Le fait de pipeter directement les noms de fichiers ferait en sorte que le second grep recherche la chaîne authenticate
dans le fichier names .
donc vous devriez finir par avec quelque chose comme
grep -r --color -L "class public interface" * | xargs grep -l "authenticate"`
Notez que xargs
divise par défaut lentrée sur nimporte quel espace, donc si vous avez des noms de fichiers avec des espaces (ou pire), vous « devrez utiliser grep -Z
et xargs -0
pour que les noms de fichiers soient séparés par des octets NUL à la place. ( Dans GNU grep, cest-à-dire. Dautres peuvent être différents, par exemple FreeBSD grep a --null
à la place.)
grep -rLZ .. | xargs -0 ..
pour éviter les problèmes dus aux noms de fichiers