Vastaa
Aivan kuten -L
etsii tiedoston sisältöä ilman vastaavuutta, -l
etsii vastaavan tiedoston sisältöä.
Joten sinun on määritettävä -l
-lippu toiseen ”rypistykseen”.
Lisäksi sinun on ohjattava ensimmäisen grep
-lähtö toiselle komentoriviargumentteina. Tämä voidaan tehdä käyttämällä xargs
-työkalua, joka on työkalu, jolla voidaan lukea kohteita vakiotulosta. Tiedostojen nimien suora syöttäminen tekisi toisen grepin etsimästä merkkijonoa authenticate
tiedostossa nimet .
joten sinun pitäisi päätyä esimerkiksi
grep -r --color -L "class public interface" * | xargs grep -l "authenticate"`
Huomaa, että xargs
jakaa oletusarvoisesti syötteen missä tahansa tyhjässä tilassa, joten jos sinulla on tiedostonimi välilyönnillä (tai pahemmalla), sinun on käytettävä grep -Z
ja xargs -0
, jotta tiedostonimet erotetaan NUL-tavuilla. ( Toisin sanoen GNU grepissä voi olla erilainen, esim. FreeBSD grepillä on sen sijaan --null
.)
grep -rLZ .. | xargs -0 ..
-toiminnon käyttämiseen tiedostojen nimien aiheuttamien ongelmien välttämiseksi