From: Brian Wallace Date: 2009-09-16T06:01:48+09:00 Subject: Find.find, limited recursion.. --0016363107cd2103690473a4172f Content-Type: text/plain; charset=ISO-8859-1 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 --0016363107cd2103690473a4172f--