Odpověď
Stejně jako -L
vyhledá obsah souboru bez shody, -l
vyhledá obsah souboru se shodou.
Takže ve druhém „greppingu“ budete muset zadat příznak -l
.
Dále budete muset nasměrovat výstup prvního grep
do druhého jako argumenty příkazového řádku. To lze provést pomocí xargs
, což je nástroj ke čtení položek ze standardního vstupu. Přímé propojení názvů souborů by vedlo k tomu, že druhý grep hledá řetězec authenticate
v souboru názvy .
, takže byste měli skončit s něčím jako
grep -r --color -L "class public interface" * | xargs grep -l "authenticate"`
Všimněte si, že xargs
ve výchozím nastavení rozděluje vstup na libovolné mezery, takže pokud máte názvy souborů s mezerami (nebo horšími) budete muset použít grep -Z
a xargs -0
, aby se názvy souborů místo toho oddělovaly bajty NUL. ( To je v GNU grep. Ostatní se mohou lišit, např. FreeBSD grep má místo toho --null
.)
grep -rLZ .. | xargs -0 ..
, aby se předešlo problémům s názvy souborů