pesquisar vários arquivos com base no arquivo que contém string

pesquisar vários arquivos com base no arquivo que contém string

digamos que eu tenha um arquivo de texto contendo e-mails

abd3@dom
abd2@dom
sdklf2@lksd
sd@gm

eu preciso de um pequeno script bash para grep , find , para encontrar o e-mail em arquivos e imprimir os arquivos que correspondem a ele.

a espera que seja

**this email abd3@dom found in file8560.txt**
**this email abd2@dom found in file750.txt**
**this email sdklf2@lksd found in file970.txt**
**this email sd@gm found in file2690.txt**

Responder1

Se você conhece a lista de arquivos para pesquisar endereços de e-mail, você pode

grep -F -H -w -o -f email_list_file list of files to search | awk -F: '{print "*** this email " $2 " found in " $1 "**}'

O sinalizador '-w' iráreduzirmas não elimina alguns dos falsos positivos que Ed aponta nos comentários. O sinalizador '-o' é necessário para imprimirapenaso endereço de e-mail, não a linha inteira que o contém.

Responder2

grep -Fxf list_of_emails.txt files...

find ... -type f -exec grep -Fxf list_of_emails.txt /dev/null {} +

Substitua o ...no findcomando por uma lista de arquivos e diretórios e talvez outros findpredicados.

O /dev/nullobjetivo é forçar grepsempre o prefixo do resultado com o nome do arquivo, o que o grep não faz quando chamado com um único arquivo. Isso emula a -Hopção GNU grep, que não é portátil.

informação relacionada