我有一个隐藏的目录(名称以.
开头)和非隐藏文件,如下所示:
$ ls -a1
.
..
.hidden
not-hidden
如何在一次通话中获得所有这些列表?
我希望Dir['*']
能够返回所有文件,但它不会:
Dir['*']
# => ["not-hidden"]
我能想到的最好的是:
Dir['*'] + Dir['.*']
# => ["not-hidden", ".", "..", ".hidden"]
而且我还希望有一种方法可以使用正则表达式,但我找不到一个,并且无法使用select
和grep
因为没有调用功能获取隐藏和非隐藏的选择。
答案 0 :(得分:5)
您可以将Dir::glob
与FNM_DOTMATCH
标志一起使用:
Dir.glob('*', File::FNM_DOTMATCH)
#=> [".", "..", ".hidden", "not-hidden"]
Dir.entries('.')
#=> [".", "..", ".hidden", "not-hidden"]
您还可以使用{p,q}
组合模式,因此Dir['{*,.*}']
也可以使用。