タグ

ブックマーク / teramako.hatenadiary.org (2)

  • 特定ディレクトリ以下を除いた find をする方法 - hogehoge @teramako

    find . -name "foo" -prune -o -print 同僚から、あるディレクトリ配下で特定ディレクトリ配下を排除したファイルリストが欲しい、何か方法はない? と訊かれた。find の !使えば良いじゃんと思ったが、前提として環境はAIX*1だ。-pathオプションがない。-pathオプションがあったとしても、find . ! -path "*/foo*"では排除したくないfoobarディレクトリも排除してしまう。 悩みつつはじき出したのがこれ。 まぁ悩んだと言っても実はManpage of FINDの-pathの項に書いてあったのを使っただけだが。ただ、上記例でうまくいく理由を考えることででfindの奥深さを味わった。思わぬ課題を出してくれた同僚に感謝。 findの奥深さ -pruneというのは条件に一致したディレクトリ配下は検索しないオプションだ。ただし、そのディレクト

    特定ディレクトリ以下を除いた find をする方法 - hogehoge @teramako
  • やっぱりawkは遅い - hogehoge @teramako

    外部コマンドは遅い。できるだけbuilt-inコマンドを使おうって話。 シェルでよくあるんだけど、ある区切りの○番目を取ってきたい、っていう場面で foo="aaaa,bbbb,cccc" bar=`echo $foo | awk -F, '{print $2}'` ってやる時がある。 けど、これ、むちゃくちゃ無駄。一回しか実行されないなら大したボトルネックにはならないが、ループの中で使うと酷い事になりがち。 awkの場合 #!/bin/sh typeset -i i=0 while (( i < 10 )) do echo "aaaa,bbbb,cccc" | awk -F, '{print $2}' >/dev/null i=$(( i + 1 )) done $ time ./awkTest.sh real 0m0.129s user 0m0.031s sys 0m0.098s re

    やっぱりawkは遅い - hogehoge @teramako
  • 1