首次發(fā)表在個人博客
前言
glob是shell使用的路徑通配符,類似于正則表達(dá)式,但是與正則表達(dá)式不完全相同,在linux操作中如文件匹配等等已經(jīng)使用了glob通配符;
語法和使用
- *:匹配一個路徑部分中0或多個字符, 注意不匹配以.開始的路徑,比如.a
- **: 匹配0個或多個子文件夾
- ?:匹配一個字符
- {a,b}: 匹配a或者b, a和b也是通配符,可以由其他通配符組成
- !: 排除文件,如!a.js表示排除文件a.js
glob非常強(qiáng)大的用途在于路徑匹配,大部分的平臺和開發(fā)語言都會在配置中使用glob路徑匹配,其普遍性幾乎使其成為一種標(biāo)準(zhǔn)。
實例
1.基于node的gulp時遇到glob匹配文件路徑
獲取js目錄下的所有js文件.(不包括以'.'開頭的文件)
//*:匹配路徑中某部分:0個或多個字符
glob("js/*.js",function (er, files) {
console.log(files)
})
2..gitignore
中遇到glob匹配文件路徑
# 此為注釋 – 將被 Git 忽略
# 忽略所有 .a 結(jié)尾的文件
*.a
# 但 lib.a 除外
!lib.a
# 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO
/TODO
# 忽略 build/ 目錄下的所有文件
build/
# 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt
doc/*.txt
.gitigore的格式規(guī)范
- 所有空行或者以注釋符號 # 開頭的行都會被 Git 忽略。
- 可以使用標(biāo)準(zhǔn)的 glob 模式匹配
- 匹配模式最后跟反斜杠(/)說明要忽略的是目錄。
- 要忽略指定模式以外的文件或目錄,可以在模式前加上驚嘆號(!)取反。