Hatena::ブログ(Diary)

にたまごほうれん草

2007-11-27

find -execの使い方

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

% find . -name \*~ -exec rm {} \;

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

http://x68000.q-e-d.net/~68user/unix/pickup?keyword=find&target=command:title=UNIXの部屋 検索:find %28*BSD/Linux/Solaris%29

今回は、サンプルファイルを一気にコンパイル、ということをやったので-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

なのだが、詳しくはマニュアルを読んでくれい。

http://x68000.q-e-d.net/~68user/unix/pickup?keyword=find&target=command:title=UNIXの部屋 検索:find %28*BSD/Linux/Solaris%29

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/emergent/20071127/1196091725