如何在一次调用中获取隐藏和非隐藏文件

时间:2016-04-27 12:27:59

标签: ruby

我有一个隐藏的目录(名称以.开头)和非隐藏文件,如下所示:

$ ls -a1
.
..
.hidden
not-hidden

如何在一次通话中获得所有这些列表?

我希望Dir['*']能够返回所有文件,但它不会:

Dir['*']
# => ["not-hidden"]

我能想到的最好的是:

Dir['*'] + Dir['.*']
# => ["not-hidden", ".", "..", ".hidden"]

而且我还希望有一种方法可以使用正则表达式,但我找不到一个,并且无法使用selectgrep因为没有调用功能获取隐藏和非隐藏的选择。

1 个答案:

答案 0 :(得分:5)

您可以将Dir::globFNM_DOTMATCH标志一起使用:

Dir.glob('*', File::FNM_DOTMATCH)
#=> [".", "..", ".hidden", "not-hidden"]

Dir::entries

Dir.entries('.')
#=> [".", "..", ".hidden", "not-hidden"]

您还可以使用{p,q}组合模式,因此Dir['{*,.*}']也可以使用。