Resposta
Assim como -L
pesquisa o conteúdo de um arquivo sem correspondência, -l
pesquisa o conteúdo de um arquivo com correspondência.
Portanto, você precisará especificar o sinalizador -l
no segundo “grepping.”
Além disso, você precisará direcionar a saída do primeiro grep
para o segundo como argumentos de linha de comando. Isso pode ser feito usando xargs
, que é uma ferramenta para ler itens da entrada padrão. Canalizar os nomes dos arquivos diretamente faria o segundo grep procurar a string authenticate
no arquivo nomes .
então você deve acabar com algo como
grep -r --color -L "class public interface" * | xargs grep -l "authenticate"`
Observe que xargs
por padrão divide a entrada em qualquer espaço em branco, portanto, se você tiver nomes de arquivo com espaços (ou pior), você “precisará usar grep -Z
e xargs -0
para que os nomes dos arquivos sejam separados por bytes NUL. ( Isto é, no GNU grep. Outros podem ser diferentes, por exemplo, FreeBSD grep tem --null
ao invés.)
grep -rLZ .. | xargs -0 ..
para evitar problemas devido a nomes de arquivo