Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Rubyでディレクトリ検索したいなら標準添付のFindライブラリを使った方が幸せになれるかもしれない。

FindライブラリはRubyに標準装備されている検索用コマンドです。
`find ...`とかやらなくとも良いのです。
その上、標準添付なのでプラットフォームの差分を吸収してくれるのが良いです。

記法はfind(1)に則るので、フツーに使えます。

$ ruby -rfind -e 'Find.find("/tmp/") {|f| p f}'
"/tmp/"
"/tmp/hoge"
"/tmp/hoge/fuga"
...

なお、ホームディレクトリを示す「~」は使えないので注意してください。*1

$ ruby -rfind -e 'Find.find("~/") {|f| p f}'
/Users/shuzo/.anyenv/envs/rbenv/versions/2.0.0-p195/lib/ruby/2.0.0/find.rb:40:in `block in find': No such file or directory 

*1:SHELLの環境変数依存だからですかね?