タグ

sys*とfindに関するsh19910711のブックマーク (2)

  • FreeBSDのfindコマンドのソースが綺麗な件 - b6note

    ちょっと前、コマンドなんでも読書会で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コ

    FreeBSDのfindコマンドのソースが綺麗な件 - b6note
  • find -execとxargs - うまいぼうぶろぐ

    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 を呼んでいる

    find -execとxargs - うまいぼうぶろぐ
    sh19910711
    sh19910711 2013/03/24
    -execオプションに\;ではなく+を渡すとxargsと同じような処理を行ってくれる
  • 1