Esta pergunta já tem respostas aqui :

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

Comentários

  • pode adicionar sugestões para usar grep -rLZ .. | xargs -0 .. para evitar problemas devido a nomes de arquivo

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *