2009-12-30 78 views
2

我想获取特定目录下所有文件的列表。 Dir.glob的效果很好,但似乎没有办法将结果限制为文件(不包括目录)。找。 -type f in ruby​​

继承人就是我现在所拥有的:

files = Dir.glob('my_dir/**/*').reject { |f| File.directory?(f) } 

有没有做到这一点更优雅的方式?

回答

2

这实际上是去这样做是一个相当有效的方式,但你也可能使用查找模块:

require 'find' 

found = [ ] 

Find.find(base_path) do |path| 
    found << path if (File.file?(path)) 
end 
+0

+1:我总是忘了'find'库,但它是最实在有效的(就程序员而言,无论如何)将POSIX'find'表达式移植到Ruby。 – 2009-12-30 18:02:32