にたまごほうれん草アーカイブ

はてなダイアリーで書いてた「にたまごほうれん草」という日記のアーカイブです。現在は「にたまごほうれん草ブログ」を運営中です。

find -execの使い方

条件にマッチしたファイルに一個ずつ-exec以下のコマンドを適用していく。これは便利。

% find . -name \*~ -exec rm {} \;
⇒ カレントディレクトリ以下の *~ をリストアップして「rm 検索したファイル名」を実行する。{}の場所には検索したファイル名が入る。; はコマンドの終了を表すが、シェルに「;」を解釈させず、find へ「;」を渡すためにエスケープしてある。また、「{}」と「\」の間には必ずスペースを空けなくてはならない。

UNIXの部屋 検索:find (*BSD/Linux/Solaris)

今回は、サンプルファイルを一気にコンパイル、ということをやったので-execでよいのだが、例えばgrepなどの場合はfindとxargsの組み合わせで使った方がよいらしい。

ソースの中から文字列「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
なのだが、詳しくはマニュアルを読んでくれい。

UNIXの部屋 検索:find (*BSD/Linux/Solaris)