Find & grep

From Evernote:

Find & grep

ソースの中から文字列「hogehoge」を検索するには
% find . -name \*.c -exec grep hogehoge {} \;

とすればよいが、これでは *.c のファイルの数だけ grep コマンドが実行され、時間がかかる。そういう場合は
% find . -name \*.c -print | xargs grep hogehoge

とすればよい。もっときっちりやるなら
% find . -name \*.c -print0 | xargs -0 grep hogehoge /dev/null

OTHER:
% find . -name '*.c' | xargs grep hoge

find が 10ファイル分を出力するたびに grep が実行されることになる。
% find . -name \*.c -print | xargs -n 10 grep hogehoge

% find . -name '*.c' -exec grep hoge {} /dev/null \;

% find . -name '*.c' -exec grep hoge {} \;

when filename or folder name contain space
% find ./ -type f -print0 | xargs -0 -- grep "test"
$ find . -type f -print0 | xargs -0 コマンド

条件の結合・否定など
-a または -and
% find . -name abc -and -type d
⇒ abc という名前のディレクトリを検索

ただし、複数の検索条件を並べて書けば AND として扱われるので、上記コマンドは
% find . -name abc -type d

0 Responses to "Find & grep"