
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 find
comando por uma lista de arquivos e diretórios e talvez outros find
predicados.
O /dev/null
objetivo é forçar grep
sempre 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 -H
opção GNU grep, que não é portátil.