somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Linux】複数ファイルへのgrep

特定ディレクトリ以下のファイルに対してgrepする方法のメモです。grepとfindとxargsを使用します。

検索方法

どちらでもできますが、検索対象が多い場合を考えるとxargsの方がいいです。多くない場合でも、検索が速いのでxargsお勧めです。

find "検索ディレクトリ" -type f -exec grep "検索文字列" {} /dev/null(ダミーならなんでもいい) \;
find "検索ディレクトリ" -type f | xargs grep "検索文字列"

空白を含むファイル

空白を含んでいる場合、そこで名前が途切れてしまうため期待する結果にならないことがあるようです。対策として、オプションを追加します。オプションの追加により、区切り文字をスペースからヌル文字にするようです。また、これらのオプションは一番最後に指定しないと動作しないことがあるようです。

find "検索ディレクトリ" -type f -print0 | xargs -0 grep "検索文字列"