2016-04-27 72 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

完美,謝謝! –