2012-09-03 82 views
10

假設的目錄結構:的Ruby 1.9.3 Dir.glob奇怪的遞歸匹配行爲

a/b/c/d/e/f/g/h 

我試圖通過尋找 'H':

Dir.glob('a/**/f/g/h') 

但是這是行不通的。有任何想法嗎?

你可以試試下面的測試案例:

$ /usr/bin/ruby -v 
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] 
$ mkdir -p a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/*')" 
a/b 
a/b/c 
a/b/c/d 
a/b/c/d/e 
a/b/c/d/e/f 
a/b/c/d/e/f/g 
a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/h')" 
a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/g/h')" 
a/b/c/d/e/f/g/h 
$ ruby -e "puts Dir.glob('a/**/f/g/h')" 
**nothing** 
+3

我越挖成這樣,我越覺得它可能是上游的報告值得一錯誤。看起來,只要有兩個以上的追蹤路徑元素,比賽就會失敗。我在下面的回答解決了當前的行爲,但它可能*是* Dir#glob中的錯誤,因爲File#fnmatch正常工作。 –

+0

我認爲這也是一個錯誤。在REE 1.8.7上,最後一個命令的輸出如預期。 –

+0

錯誤報告鏈接:http://bugs.ruby-lang.org/issues/6977 –

回答