find + grepでフォルダ内を再帰的に検索しよう

特定のディレクトリ配下のファイル内をgrep検索する方法です。
例えば、ログディレクトリ内の「ERROR」文字列を探したり
設定ファイル内のDB接続設定を確認したり覚えておくとかなり便利なのでぜひ使ってみてください。

find + grep の使い方

$ find ./ -type f | xargs grep [検索文字列]

find ./ –> カレントディレクトリ
-type f –> ファイルを対象にする(指定しないとディレクトリが検索対象に入ってしまうため)

findは、最近更新されたファイルなど、検索対象を色々絞れるため基本的は指定方法はおさえておきましょう。
xargsは、橋渡しのようなコマンドです。上記ではfindで検索したファイルの全てに対して、grepを実施しています。他にも検索したファイルを全てgzipする、削除するなども出来ます。

xargs使い方

xargsの基本的な使い方

$ find . -name "*.log" | xargs rm -f

これで、「*.log」に対して、rmコマンドを実施出来ます。

xargsのドライラン

$ find . -name "*.log" | xargs -p rm -f

-pオプションを付けることで、実際に実施されるコマンドが確認できます。

引数の位置を指定

$find . -name "*.log" | xargs -i cp {} /tmp/

{}を使うことで、findで取得したファイルをコマンドのどこに渡すか指定出来ます。