Tak jak -L
wyszukuje zawartość pliku bez dopasowania, -l
wyszukuje zawartość pliku z dopasowaniem.
Będziesz więc musiał określić flagę -l
w drugim „greppingu”.
Dodatkowo będziesz musiał skierować wynik pierwszego grep
do drugiego jako argumenty wiersza poleceń. Można to zrobić za pomocą narzędzia xargs
, które jest narzędziem do odczytywania elementów ze standardowego wejścia. Bezpośrednie przesłanie nazw plików potokiem spowodowałoby, że drugi grep szukałby ciągu authenticate
w nazwach plików .
więc powinieneś skończyć z czymś takim jak
grep -r --color -L "class public interface" * | xargs grep -l "authenticate"`
Zauważ, że xargs
domyślnie dzieli dane wejściowe na dowolne białe znaki, więc jeśli masz nazwy plików ze spacjami (lub gorzej), „będziesz musiał użyć grep -Z
i xargs -0
, aby zamiast tego nazwy plików były rozdzielone bajtami NUL. ( To znaczy w GNU grep. Inne mogą być inne, np. FreeBSD grep ma zamiast tego --null
.)
Komentarze