find -execの使い方
条件にマッチしたファイルに一個ずつ-exec以下のコマンドを適用していく。これは便利。
% find . -name \*~ -exec rm {} \;
UNIXの部屋 検索:find (*BSD/Linux/Solaris)
⇒ カレントディレクトリ以下の *~ をリストアップして「rm 検索したファイル名」を実行する。{}の場所には検索したファイル名が入る。; はコマンドの終了を表すが、シェルに「;」を解釈させず、find へ「;」を渡すためにエスケープしてある。また、「{}」と「\」の間には必ずスペースを空けなくてはならない。
今回は、サンプルファイルを一気にコンパイル、ということをやったので-execでよいのだが、例えばgrepなどの場合はfindとxargsの組み合わせで使った方がよいらしい。
ソースの中から文字列「hogehoge」を検索するには
UNIXの部屋 検索:find (*BSD/Linux/Solaris)
% 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
なのだが、詳しくはマニュアルを読んでくれい。