Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby:迭代文件夹中的所有.rb(包括子文件夹)文件_Ruby - Fatal编程技术网

Ruby:迭代文件夹中的所有.rb(包括子文件夹)文件

Ruby:迭代文件夹中的所有.rb(包括子文件夹)文件,ruby,Ruby,文件结构: folderA/ - folder1/ - file1.rb - file2.rb - folder2/ - folder1/ - file1.rb - folder2/ - file1.rb - file1.rb - file2.rb 使用下面的代码,我只能在folderA/file1.rb和folderA/file2.rb # EDITTED Dir.glob('folderA/*.rb') do |file| puts

文件结构:

folderA/
 - folder1/
   - file1.rb
   - file2.rb
 - folder2/
   - folder1/
     - file1.rb
   - folder2/
     - file1.rb
 - file1.rb
 - file2.rb
使用下面的代码,我只能在
folderA/file1.rb
folderA/file2.rb

# EDITTED
Dir.glob('folderA/*.rb') do |file|
  puts file
end
是否可以仅使用
glob
(不使用Dir.foreach(Dir)…if..)在中迭代所有
.rb
文件(包括子文件夹)

p.S.Ruby v.1.8.6

试试这个:

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

Dir.glob('folderA/**/*.rb') do |file|
  puts file
end
来自官方:

**
递归地匹配目录

这应该起作用:

资料来源:


在ruby 1.8.7中测试,这并不新鲜:您可以随时删除它。只是不要在表单中命名目录
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