ファイル検索 find grep

$ echo -R . | xargs grep test_config
./application/controllers/test.php:    protected $test_config = array();
echo -R 検索ディレクトリ | xargs grep 検索文字列

$ find . -iname \*.php -print | xargs grep database_config
./application/controllers/test.php:    protected $test_config = array();
find 検索ディレクトリ -iname \*検索ファイル名 -print | xargs grep 検索文字列

xargs(エックスアーグス)を利用することにより、OSの文字列検索制限を考慮して効率よく検索することが可能になります。

-iname: 大文字小文字を区別しません。

例)less という文字列を含むファイルを、行番号を出力しながら前後2行も同時に表示する

$ find . -type file -name \* -print | xargs grep -2 -n less
Binary file ./public_html/less/.top.less.swp matches
./public_html/less/about.less-1-@charset "UTF-8";
./public_html/less/about.less:2:@import "setting.less";
./public_html/less/about.less-3-
./public_html/less/about.less-4-
--
--
./public_html/less/contact.less-1-@charset "UTF-8";
./public_html/less/contact.less:2:@import "setting.less";
./public_html/less/contact.less-3-
./public_html/less/contact.less-4-
--
--

timeコマンドを使えば、該当のコマンド実行にかかった時間が表示されます。

$ time find . -type file -name \* -print | xargs grep -2 -n less

find . -type file -name \* -print  0.00s user 0.00s system 90% cpu 0.007 total
xargs grep -2 -n less  0.49s user 0.03s system 79% cpu 0.651 total