2013-12-08 58 views
1

在GruntJS網站上,它有section on globbing patterns,但是我有點困惑。關於通配圖案的混淆

foo/**/*.js將匹配在foo/ 子目錄與.js結尾的所有文件及其所有子目錄。

我看到兩個星號的所有路徑包括/但如果一個文件是在foo路徑,就意味着該公司試圖以匹配一個名爲foo//*.js路徑相匹配?

在我發現之前,我正在嘗試類似於foo/{,**}*.js的東西,但那些東西從來沒有真正做過我想要的東西,我對爲什麼沒有起作用感到困惑。

回答

0

雙星號表示該模式應執行遞歸匹配;即查看它找到的所有子目錄。例如,模式將匹配:

1. foo/bar.js 
2. foo/baz.js 
3. foo/bar/baz.js 
4. foo/bar/baz/qux.js 

它將不匹配foo.txt文件。儘管如foo/**這樣的模式將會匹配遞歸的所有txt,js,css等)。

而諸如foo/*.js這樣的模式只會匹配1和2,因爲它不是遞歸模式。

+0

我明白那一部分。令我困惑的部分是雙星號後面有一個斜線。斜槓在這裏不是被解釋爲文字嗎? –

+0

我不這麼認爲,不。你使用的模式實際上是在幕後轉化爲正則表達式,所以'magic''*'被替換爲一個字符類。它不會匹配'foo // qux.txt',因爲擴展名是錯誤的。 – Ben

+0

糟糕,'.txt'是一個錯字,應該是'.js'。它現在已經得到糾正。 –