B
Brian Wallace
[Note: parts of this message were removed to make it a legal post.]
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
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