検索語句を含むファイルリスト作成
今回は、
複数のファイルで、指定したワードを検索して
該当するファイルのリストを作成する
1 | sudo grep -r key /etc/ |
grep に -r オプションをつけることで
再帰的に行を検索するようになる
これを実行すると
/etc/ のしたにあるファイルから
key を含む行が表示される
かなりの量になるので、結果は今回は掲載しない
次に、この結果から
ファイル名を残して
重複部分はuniq コマンドで削除する
ファイル名のみにするには
sed コマンドで置き換えをする
grep の結果をパイプでつないで
sed ’s/:.*$//‘
とするとファイル名だけになる
これは実行結果が
ファイル名:該当する内容
となっているので
不必要な部分を削除するには
: から行末までを削除すればok
なので
sed ’s/:.*$//‘
とすれば
: を含むところから $ つまり行末までを
対象に置き換えをする
//となっているので中身は削除される
sed コマンドについては
【 sed 】 文字列の置換,行の削除を行う
を参考に
これでファイル名だけになるけど
重複箇所がでてくる
これを uniq コマンドで削除する
uniqコマンドについて詳しくは
【 uniq 】 ソート済みのファイルから重複した行を削除する
の解説をみるとわかりやすい
これらを元に、コマンドを実行すると
1 | sudo grep -r key /etc/ | sed 's/:.*$//' | uniq |
これでファイル名がわかるけど
問題としては日本語の行を消すことができない
今回の結果の一部
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /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 オプションをつければ
ファイル名のみ出力することができた
1 | sudo grep -rl key /etc/ |
これを実行すれば
日本語の文字列はなくなった