検索語句を含むファイルリスト作成

検索語句を含むファイルリスト作成

今回は、
複数のファイルで、指定したワードを検索して
該当するファイルのリストを作成する

sudo grep -r key /etc/

grep に -r オプションをつけることで
再帰的に行を検索するようになる

これを実行すると
/etc/ のしたにあるファイルから
key を含む行が表示される
かなりの量になるので、結果は今回は掲載しない

次に、この結果から
ファイル名を残して
重複部分はuniq コマンドで削除する

ファイル名のみにするには
sed コマンドで置き換えをする

grep の結果をパイプでつないで

sed ’s/:.*$//‘
とするとファイル名だけになる

これは実行結果が
ファイル名:該当する内容
となっているので
不必要な部分を削除するには
: から行末までを削除すればok

なので
sed ’s/:.*$//‘
とすれば
: を含むところから $ つまり行末までを
対象に置き換えをする
//となっているので中身は削除される

sed コマンドについては
【 sed 】 文字列の置換,行の削除を行う

を参考に

これでファイル名だけになるけど
重複箇所がでてくる
これを uniq コマンドで削除する

uniqコマンドについて詳しくは
【 uniq 】 ソート済みのファイルから重複した行を削除する

の解説をみるとわかりやすい

これらを元に、コマンドを実行すると

sudo grep -r key /etc/ | sed 's/:.*$//'| uniq

これでファイル名がわかるけど
問題としては日本語の行を消すことができない

今回の結果の一部


/etc/ssl/certs/renew-dummy-cert
/etc/postfix/access
/etc/postfix/main.cf
/etc/rc2.d/K70vboxadd-x11
/etc/rc2.d/S55sshd
/etc/bash_completion.d/git
バイナリー・ファイル/etc/pki/nssdb/secmod.dbは一致しました
/etc/pki/nssdb/pkcs11.txt
/etc/pki/ca-trust/extracted/java/README
バイナリー・ファイル/etc/pki/ca-trust/extracted/java/cacertsは一致しました
/etc/pki/tls/certs/make-dummy-cert
/etc/pki/tls/certs/Makefile
/etc/pki/tls/certs/ca-bundle.trust.crt
/etc/pki/tls/certs/ca-bundle.crt.rpmnew
/etc/pki/tls/certs/renew-dummy-cert
/etc/pki/tls/misc/CA
/etc/pki/tls/openssl.cnf
バイナリー・ファイル/etc/pki/java/cacertsは一致しました
/etc/rc.sysinit


実はもっと簡単な方法があった

grep コマンドで -l オプションをつければ
ファイル名のみ出力することができた

sudo grep -rl key /etc/

これを実行すれば
日本語の文字列はなくなった

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です