From: Brian Wallace Date: 2009-09-16T22:51:53+09:00 Subject: Re: Find.find, limited recursion.. --0016363105c970bf120473b2339b Content-Type: text/plain; charset=ISO-8859-1 Robert, Hrrm - A simple solution of course ... and I've spent all this time trying to figure it out on my own , without asking for help! :) You've helped me in the past with a few other problems, and you were spot on each time .. I envy you, and hope that I am able to become even as half as knowledgeable as you are.. Best Regards, Brian On Wed, Sep 16, 2009 at 2:51 AM, Robert Klemme wrote: > 2009/9/15 Brian Wallace : > > 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! > > require 'no gems' # silly joke > > Dir["#{@root_dir}/*/*"].each do |f| > next unless File.file? f > d, b = File.split f > process_list[d] << b > end > > Kind regards > > robert > > -- > remember.guy do |as, often| as.you_can - without end > http://blog.rubybestpractices.com/ > > --0016363105c970bf120473b2339b--