2016-04-27 69 views
1

我有一个目录既隐藏(名称以.)和文件非隐藏如下:如何获得两个隐藏文件非隐藏在一个单一的通话

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

我如何得到的列表他们都在一个电话?

我预计Dir['*']返回所有的文件,但它并不:

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

我能想到的最好的是:

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

而且我也希望那里是一个办法使用正则表达式,但我找不到一个,并且不可能使用selectgrep,因为没有呼叫能够隐藏和非隐藏从中选择。

回答

5

你可以使用Dir::globFNM_DOTMATCH标志:

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

Dir::entries

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

您也可以使用{p,q}结合的模式,所以Dir['{*,.*}']也将工作。

+0

完美,谢谢! –