Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

ちょっと前、コマンドなんでも読書会でFreeBSD 8.2のfindコマンドを 読んだんだけど、なかなかしっかり作られてて、読んでよかったんだ。 読んだのはこれ。 http://svn.freebsd.org/base/release/8.2.0/usr.bin/find/ 抽象化でポリモルフィズムでどーん 当然C言語で実装されているわけだけど、 構造体と関数ポインタをばりばり使って しっかりオブジェクト指向してる。 関数ポインタがメソッドの役割になってる。 処理概要 findコマンドはmain.cを始めとしてfind.cとかfunction.cとか 複数のファイルで構成されているんだけど、簡単に処理の順番をまとめると オプションの解釈 "PLAN"の解析と作成 "PLAN"の実行 となっている。 PLANはクラス PLANというのは、findコマンドに渡した 各引数から生成したfindコ
何となく「codeなにがし」を見ていたところ、findコマンドを利用して複数の拡張しにマッチしたファイル一覧を取得する方法が書いてあった。 codeなにがし::linuxでテキストファイルだけをコピー 質問者は*.c *.cc *.h *.hhなどの拡張子を持つファイルの一覧を取得したいとのことで、このためには次のようにfindを実行すればよいそうな(一部省略)。 $ find . \( -name \*.c -o -name \*.cc -o -name \*.h -o -name \*.hh \) -print 「-name」オプションは検索対象のファイルの名前を指定するオプション。これをORを意味する「-o」オプションで複数つなげることで、複数の拡張子のどれか1つにマッチするファイルを見つけ出すことができる。ちなみに「-o」は「-or」とも書ける。 僕も以前似たようなことをしたことが
find -execは、1ファイルに対して1回ずつコマンドを実行。xargsは標準入力から受け取った複数のファイルに対して、コマンドを1回で実行(といってもシェルに渡せる限界があるから、入力が多すぎる場合は複数回にわけて実行)。だから、xargsのほうが早いと思っていた。例えば特定のファイルを消す場合。 $ find /tmp/ -type f -mtime +1 -exec rm {} \; # 以下とほぼ同等 $ find /tmp/ -type f -mtime +1 -print0 | xargs -0 -n1 rmところが、find -execで'\;'ではなく、'+'を指定すればxargsと同じように、複数ファイルに対してコマンド実行するらしい。 http://ja.wikipedia.org/wiki/Xargs これはすべての単一ファイルに対して一回ずつ rm を呼んでいる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く