Svar
Akkurat som -L
søker etter innholdet i en fil uten samsvar, -l
søker etter innholdet i en fil med en samsvar.
Så du må spesifisere -l
-flagget i den andre «grepping».
I tillegg må du lede utgangen fra den første grep
til den andre som kommandolinjeargumenter. Dette kan gjøres ved hjelp av xargs
, som er et verktøy for å lese elementer fra standardinngangen. Hvis du piper filnavnene direkte, vil andre grep se etter strengen authenticate
i filen navn .
så du bør ende opp med noe sånt som
grep -r --color -L "class public interface" * | xargs grep -l "authenticate"`
Vær oppmerksom på at xargs
som standard deler inngangen på et hvilket som helst hvitt område, så hvis du har filnavn med mellomrom (eller verre), må du bruke grep -Z
og xargs -0
for å ha filnavnene atskilt med NUL-byte i stedet. ( I GNU grep, altså. Andre kan være forskjellige, f.eks. Har FreeBSD grep --null
i stedet.)
grep -rLZ .. | xargs -0 ..
for å unngå problemer på grunn av filnavn