Tato otázka již má odpovědi zde :

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

Komentáře

  • může přidat návrh na použití grep -rLZ .. | xargs -0 .., aby se předešlo problémům s názvy souborů

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *