カーネルなど大規模なソースコードを検索したい場合、findとgrepを使ったり、タグジャンプを使うだろう。Eclipse使う場合とか異論はあると思うけど、今日はfindとgrepの合わせ技について調べてみた。 普段はxargsを噛ませて、 $ find . -name \*.c | xargs grep hogehogeとかやるんだけど、findの-execオプションを使った場合とどれくらい性能差があるのだろうか? 評価環境はVMWare Fusion上のUbuntu 11.04。Linux kernel 2.6.28.10のfs以下で、まずは次の3パターンを比較してみた。3回測定してtimeの最良値を示す。おそらく対象ファイルはファイルキャッシュに載っている思う。 $ time find . -name \*.c -exec grep wait_event_interruptible {
拡張子を指定して、再帰的にgrepしたい。色々やってみた。 こんな感じ? そんなわけで、findを使って検索範囲を絞りこむ。 xargsを使うと、 % find ../ -name '*.c' | xargs grep hogeうは、めんどい。(速度は早い) コマンド置換で。 % grep hoge $(find ../ -name '*.c')ちょっとすっきり。 zshで。 % grep hoge ../**/*.cいいね。 manを真面目に読んでみるかなぁと 数年の時が流れ manを真面目に読んだら、 % grep hoge --include='*.c' -rあるじゃん。 参考 Man page of GREP 更新履歴 2013/04/11 manを真面目に読んだ。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く