Como posso executar um segundo grep nos arquivos retornados de um grep anterior?

5

Eu sempre me vejo procurando por um monte de código usando o grep para definir o que estou procurando. Às vezes recebo uma lista de arquivos um pouco mais do que esperava. Neste ponto, quero executar um segundo grep, mas apenas pesquisando os arquivos retornados pela primeira pesquisa do grep. Existe uma maneira de fazer isso? Eu basicamente quero fazer referência cruzada a duas buscas no grep e só receber de volta os arquivos com os dois resultados contidos neles.

    
por Chev 04.08.2014 / 18:57

1 resposta

9
grep -lZ "first string" * | xargs -0 grep -l "second string"
  • Primeiro grep retornará os arquivos contendo first string .

  • O segundo grep fará o mesmo para second string , mas sobre os resultados do primeiro grep .

  • O argumento -Z para grep e o argumento -0 para xargs trabalham juntos para ativar o suporte a nomes de arquivos que incluem espaços.

Editar - graças a Ajedi32 :

xargs permite usar os resultados de um comando como os argumentos para outro.

Do artigo da Wikipedia xargs , xargs é um comando no Unix e na maioria dos Unix- como sistemas operacionais usados para construir e executar linhas de comando a partir da entrada padrão.

    
por 04.08.2014 / 19:04