
digamos que tengo un archivo de texto que contiene correos electrónicos
abd3@dom
abd2@dom
sdklf2@lksd
sd@gm
Necesito un pequeño script bash para grep, find, para buscar, contener el correo electrónico en archivos e imprimir los archivos que coincidan.
la espera que sea
**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**
Respuesta1
Si conoce la lista de archivos para buscar direcciones de correo electrónico, puede
grep -F -H -w -o -f email_list_file list of files to search | awk -F: '{print "*** this email " $2 " found in " $1 "**}'
La bandera '-w'reducirpero no eliminar algunos de los falsos positivos que Ed señala en los comentarios. La bandera '-o' es necesaria para imprimirsolola dirección de correo electrónico, no la línea completa que la contiene.
Respuesta2
grep -Fxf list_of_emails.txt files...
find ... -type f -exec grep -Fxf list_of_emails.txt /dev/null {} +
Reemplace el ...
en el find
comando con una lista de archivos y directorios, y tal vez otros find
predicados.
La /dev/null
idea es forzar grep
que siempre se prefije el resultado con el nombre del archivo, lo que grep no hace cuando se llama con un solo archivo. Esto emula la -H
opción de GNU grep, que no es portátil.