Cette question a déjà des réponses ici :

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.)

Commentaires

  • peut ajouter une suggestion dutilisation de grep -rLZ .. | xargs -0 .. pour éviter les problèmes dus aux noms de fichiers

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *