On May 31, 2006, at 7:27 AM, Roman Leitner wrote:

> Hi all,
>
> i am quite new to ruby and I was wondering if there is a method in  
> ruby
> to get a list of folders and subfolders.
>
> e.g.: I have a 'root' directory and some sub directories and finaly  
> some
> data files.
>
> ---root
>      |---sub1
>      |     |----sub1A
>      |     |       |----data.txt
>      |     |
>      |     |----sub1B
>      |             |----data.txt
>      |
>      |---sub2
>      |     |----sub2A
>      |     |       |----data.txt
>      .     .
>      .     .
>      .     .
>    and so on.
>
> is there a way in ruby to get a list of all subdirectories, or maybe a
> string to each data.txt (this name doesnot change)
>
> The problem is, that i don't know how many 'data.txt' there are ,  
> and so
> i would need a method that searches in all subdirectories(starting at
> 'root') for this file and returns an array of strings with the path to
> each file.

Neo:~/Desktop$ ruby search.rb
root/sub1/sub1A/data.txt
root/sub1/sub1B/data.txt
root/sub2/sub2A/data.txt
Neo:~/Desktop$ cat search.rb
#!/usr/local/bin/ruby -w

def search( directory, pattern )
   result = Array.new
   Dir.glob("#{directory}/*") do |file|
     next if file[0] == ?.
     if File.directory? file
       result.push(*search(file, pattern))
     elsif file =~ pattern
       result << file
     end
   end
   result
end

puts search("root", /data\.txt\Z/)

Hope that helps.

James Edward Gray II