Assim como -L
procura conteúdo de um arquivo sem correspondência, -l
pesquisa o conteúdo de um arquivo com uma correspondência.
Portanto, você precisará especificar o -l
flag no segundo "grepping".
Além disso, você precisará direcionar a saída do primeiro grep
para o segundo como argumentos da linha de comando. Isso pode ser feito usando xargs
, que é uma ferramenta para ler itens da entrada padrão. Piping os nomes dos arquivos diretamente faria o segundo grep procurar pela 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 arquivos com espaços (ou piores), será necessário usar grep -Z
e xargs -0
para separar os nomes de arquivo por NUL bytes em vez disso. (No GNU grep, isto é, outros podem ser diferentes, por exemplo, o FreeBSD grep tem --null
).