On May 21, 2007, at 9:00 PM, rio4ruby wrote: > On Apr 24, 11:21 am, "Leslie Viljoen" <leslievilj... / gmail.com> wrote: >> On 4/24/07, Daniel Berger <djber... / gmail.com> wrote: >> >> >> >>> Hi all, >> >>> I'm happy to announce the first release of file-find. This >>> package is >>> meant as a replacement for the current 'find' module in the Ruby >>> standard library. It provides many more options for controlling the >>> behavior of your find operations. >> >>> It is modelled on the 'find' command typically found on Unix >>> systems. >> >>> Example1: >> >>> # Look for all .rb files changed in the last 24 hours >>> rule = File::Find.new(:name => "*.rb", :ctime => 0) >>> rule.find{ |file| puts file } >> >>> # Look for all text files owned by user id 23, don't follow symlinks >>> rule = File::Find.new(:name => "*.txt", :user => 23, :follow => >>> false) >>> rule.find{ |file| puts file } >> >>> You can find install the file-find package as a gem, or grab the >>> file >>> from the project page athttp://rubyforge.org/projects/shards/. You >>> can also find it on the RAA. >> >> Woo! Thanks! >> One question: what happens when you iterate over a directory you do >> not have permission to read?Riothrows an exception and exits, >> meaning the remaining files are skipped, which is not cool. > > Rio does raise an exception when trying to read the contents of a > directory that one does not have permission to read. This behaviour is > due to the fact that Rio is a facade for the builtin class Dir -- and > Dir raises an exception. Personally I think this behavior is > appropriate. Silently skipping unreadable directories is not always > desired > >> I tried to >> provide an option to skip forbidden directories, but Rio is a bit >> convoluted. > > No additional option is required to get the desired behavior. Rio > allows control of which directories will be recursed into. > > rio('adir').recurse(:readable?).files('*.txt') { ... } > > This will silently skip unreadable directories. > > -Christopher > > fyi. require 'alib' alib.util.find '/tmp', :follow => true and much much more ;-) -a -- we can deny everything, except that we have the possibility of being better. simply reflect on that. h.h. the 14th dalai lama