検索語句を含むファイルリスト作成
今回は、
複数のファイルで、指定したワードを検索して
該当するファイルのリストを作成する
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/
これを実行すれば
日本語の文字列はなくなった