
メールを含むテキストファイルが1つあるとします
abd3@dom
abd2@dom
sdklf2@lksd
sd@gm
ファイルにメールが含まれているかどうかを検索し、それに一致するファイルを出力するための、grep と find 用の小さな bash スクリプトが必要です。
それが期待される
**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**
答え1
メールアドレスを検索するファイルのリストがわかっている場合は、
grep -F -H -w -o -f email_list_file list of files to search | awk -F: '{print "*** this email " $2 " found in " $1 "**}'
'-w'フラグは減らすしかし、Edがコメントで指摘している誤検知の一部は排除できません。「-o」フラグは印刷に必要です。のみ電子メール アドレスを含む行全体ではなく、電子メール アドレスのみ。
答え2
grep -Fxf list_of_emails.txt files...
find ... -type f -exec grep -Fxf list_of_emails.txt /dev/null {} +
...
コマンド内の をfind
、ファイルとディレクトリのリスト、および場合によっては他の述語に置き換えますfind
。
は、結果の先頭に常にファイル名を付けるように/dev/null
します。これは、grep が単一のファイルで呼び出されたときには実行されません。これは、移植性のない GNU grep のオプションをエミュレートします。grep
-H