Dette spørgsmål har allerede svar her :

Svar

Ligesom -L søger efter indhold i en fil uden match, -l søger efter indholdet af en fil med et match.

Så du bliver nødt til at angive -l flag i den anden “grepping”.

Derudover skal du dirigere output fra den første grep til den anden som kommandolinjeargumenter. Dette kan gøres ved hjælp af xargs, som er et værktøj til at læse emner fra standardindgangen. Piping af filnavne direkte ville få den anden grep til at se efter strengen authenticate i filen navne .

så du skulle ende med noget som

grep -r --color -L "class public interface" * | xargs grep -l "authenticate"` 

Bemærk, at xargs som standard opdeler input på ethvert hvidt område, så hvis du har filnavne med mellemrum (eller værre) skal du bruge grep -Z og xargs -0 for at få filnavne adskilt af NUL-byte i stedet. ( I GNU grep er det. Andre kan være forskellige, f.eks. Har FreeBSD grep --null i stedet.)

Kommentarer

  • kan tilføje forslag om at bruge grep -rLZ .. | xargs -0 .. for at undgå problemer på grund af filnavne

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *