From: Brian Wallace Date: 2009-09-16T22:43:22+09:00 Subject: Re: Find.find, limited recursion.. --0016364d267bf666350473b2147c Content-Type: text/plain; charset=ISO-8859-1 Thanks Dan, That would actually work out OK - however since i'm using JRuby I wouldn't be able to use a gem with native C extensions.. Thanks for the suggestion! Brian On Tue, Sep 15, 2009 at 9:48 PM, Daniel Berger wrote: > Brian Wallace wrote: > >> Hi all, >> >> I'm working on a script that's currently using Find.find to process a >> complete directory tree of files and directories .. .however I needed >> specific behavior, and I'm still fairly new to this... >> >> Basically it works like this, the user specifies the root directory of a >> collection of sub-directories we are interested in .. for instance: >> >> User specifies: C:\Root >> >> C:\Root >> | >> -->\Dir1 >> | >> -->Files_in_dir1 >> | >> -->\Dir2 >> | >> -->Files_in_dir2 >> >> >> But we are only interested in the _files_ in \Dir1 , \Dir2 ..and want to >> essentially Prune recursion into C:\Root\Dir1\Subdir_of_Dir1 , and >> C:\Root\Dir2\Subdir_of_Dir2 if those exist .. >> >> This is what I am currently using, however it will pick up the sub >> directories of Dir1 and Dir2 and update the hash... Does anyone see any >> way >> this could be refactored to not update the "process_list" hash with the >> sub >> directories of Dir1 and Dir2? >> >> -- >> >> @root_dir = "C:\Root" >> >> process_list = Hash.new {|h,k| h[k] = []} >> >> Find.find(@root_dir.to_s) do |f| >> f = f.gsub(/\\/,'/') >> next if File.stat(f).directory? or f.include?('skipped_filename') >> Find.prune if f.include?("skipped_dirname") >> d, b = File.split(f) >> process_list [d] << b >> end >> >> Thanks in advance! >> >> Brian >> >> > Perhaps you would like file-find better. I think this is what you want: > > gem install file-find > > rule = File::Find.new( > :path => ['C:/Root/Dir1', 'C:/Root/Dir2'], > :maxdepth => 2, > :directory? => false > ) > > p rule.find > > http://shards.rubyforge.org/wiki/wiki.pl?File-Find > > Regards, > > Dan > > --0016364d267bf666350473b2147c--