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