Como encontro arquivos contendo duas strings juntos no Linux? [duplicado]

1

Eu tenho um arquivo contendo um texto:

PADLST20120907:D:05B:UN:IBTA+TK4 17 JFL01+01'BGM+250+C'RFF+TN:TK4

Eu quero encontrar este arquivo no Linux, usando estas duas strings: "JFL" e "20120907". Como você vê acima, o arquivo contém "JFL" e "20120907". O que devo escrever na linha de comando? Agitações podem ou não estar na mesma linha.

Eu quero ver nomes de arquivos com caminho completo na saída. Não quero ver mensagens de erro ou permissão negada avisos. Eu quero pesquisar recursivamente no diretório em que estou ou gostaria de especificar um caminho.

considera

    
por alwbtc 13.09.2012 / 09:19

1 resposta

3

Um simples laço bash fará o que você precisa:

$ grep -rl JFL . | while read n; do grep -l 20120907 $n; done

Se os nomes dos seus arquivos contiverem espaços, faça:

$ grep -rl JFL . | while read n; do grep -l 20120907 "$n"; done

Para suprimir mensagens de erro, redirecione o erro padrão :

$ grep -rl JFL . 2>/de/null | while read n; do grep -l 20120907 "$n"; done
    
por 13.09.2012 / 17:04

Tags