在Ruby中列出目录中的目录的内置方法

17

有没有更简洁的内置方法来做到这一点?

ree> Pathname.new('/path/to').children.select{|e| e.directory?}.map{|d| d.basename.to_s}
 => ["test1", "test2"]

理想情况下,我希望避免调用directory?


可能是重复的问题:获取目录中文件夹列表 - Ciro Santilli OurBigBook.com
2个回答

33

从Chandra的回答开始,根据您是否需要完整路径,您可以使用

Dir['app/*/']
# => ["app/controllers/", "app/helpers/", "app/metal/", "app/models/", "app/sweepers/", "app/views/"

Dir['app/*/'].map { |a| File.basename(a) }
# => ["controllers", "helpers", "metal", "models", "sweepers", "views"]

如果你使用的是 Ruby >= 1.8.7,那么 Chandra 的回答也可以重写为:
Pathname.glob('app/*/').map(&:basename)
# you can skip .to_s unless you don't need to work with strings
# remember you can always use a pathname as string for the most part of Ruby functions
# or interpolate the value

9
Pathname.glob("/path/to/*/").map { |i| i.basename.to_s }

这只打印目录名称。 - Chandra Patni
这个我支持,但是我会等一下再接受,以防出现更好的解决方案。 - Sam Saffron
@Chandra Patni,这就是他所要求的。 - johannes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接