9

Files structure:

folderA/
 - folder1/
   - file1.rb
   - file2.rb
 - folder2/
   - folder1/
     - file1.rb
   - folder2/
     - file1.rb
 - file1.rb
 - file2.rb

With code below i can iterate only on folderA/file1.rb and folderA/file2.rb

# EDITTED
Dir.glob('folderA/*.rb') do |file|
  puts file
end

Is it possible to iterate over all .rb files (including subfolders) within only using glob (without Dir.foreach(dir)..if..)?

P.S. Ruby v.1.8.6

ted
  • 5,219
  • 7
  • 36
  • 63

3 Answers3

24
Dir.glob('folderA/**/*.rb') do |file|
  puts file
end

From official docs:

**
Matches directories recursively.

hs-
  • 1,016
  • 9
  • 17
2

try this:

Dir.glob('spec/**/*.rb') do |rspec_file|
  puts rspec_file
end

read here about glob

davidrac
  • 10,723
  • 3
  • 39
  • 71
2

This should work:

Source here: http://ruby-doc.org/stdlib-1.9.3/libdoc/find/rdoc/Find.html

require 'find'

Find.find('spec/') do |rspec_file|
    next if FileTest.directory?(rspec_file)
    if /.*\.rb/.match(File.basename(rspec_file))
        puts rspec_file
    end
end

Tested in ruby 1.8.7

Daniel
  • 23,129
  • 12
  • 109
  • 154
jabadie
  • 21
  • 3