2012-12-11 66 views
0

我想建立一個目錄中的文件的列表。我一直在使用Dir.glob取得好成績,直到我找到一個帶有[]的目錄爲止。現在glob沒有任何返回。Dir.glob無法返回文件列表時,路徑包括[...]

[1] pry(main)> Dir.glob '/Users/zach/inst/good folder/*' 
=> ["/Users/zach/inst/good folder/output.txt", 
"/Users/zach/inst/good folder/output2.txt"] 
[2] pry(main)> Dir.glob '/Users/zach/inst/bad [folder]/*' 
=> [] 

請注意,「好」和「壞」文件夾都具有相同的內容,並且ZSH處理它很好。

─$ ls '/Users/zach/inst/good folder' 
output.txt output2.txt 

-$ ls '/Users/zach/inst/bad [folder]' 
output.txt output2.txt 

對發生了什麼以及是否有解決方法有任何想法?

+0

嘗試使用雙引號或轉義括號。 – squiguy

回答

1

嘗試以下操作:

Dir.glob '/Users/zach/inst/bad \[folder\]/*' 
+0

這很有效,但我得到了Dir.glob的「壞」路徑。所以我首先將一個價值環境傳遞給我。有沒有一種方法在將它傳遞給glob之前以編程方式轉義路徑? – Zach

+0

path.gsub!('[','\\ [')。gsub!(']','\\]')會爲方括號做。你有其他「壞」字嗎? –

+0

我想這是我的觀點:)......我沒想到[]會成爲一個問題。我只是隨機發現它。還有其他隱藏的「壞」字嗎? – Zach