Glob 是什么
glob
是一種文件匹配模式,全稱 global,它起源於 Unix 的 bash shell 中,比如在 linux 中常用的 mv *.txt tmp/
中,*.txt
就使用到了這種模式。
Glob 有哪些用途
在計算機編程中,經常需要對文件或者文件夾進行操作,那么會經常涉及到一些文件或者文件夾的匹配操作,此時就是 Glob 模式大顯身手的時候,比如上面的 mv
命令。
大家最熟悉的應用的地方可能給就是 git 中的 .gitignore
中的表達式了,它就是 Glob 模式的一個典型用法。
Glob 用法
以下是表達式的說明,注意 Glob 不匹配任何隱藏文件或文件夾。
模式 | 說明 |
---|---|
* |
匹配除了斜杠(/)之外的所有字符。 Windows上是斜杠(/)和反斜杠(\) |
** |
匹配零個或多個目錄及子目錄。不包含 . 以及 .. 開頭的。 |
? |
匹配任意單個字符。 |
[seq] |
匹配 seq 中的其中一個字符。 |
[!seq] |
匹配不在 seq 中的任意一個字符。 |
\ |
轉義符。 |
! |
排除符。 |
?(pattern_list) |
匹配零個或一個在 pattern_list 中的字符串。 |
*(pattern_list) |
匹配零個或多個在 pattern_list 中的字符串。 |
+(pattern_list) |
匹配一個或多個在 pattern_list 中的字符串。 |
@(pattern_list) |
匹配至少一個在 pattern_list 中的字符串。 |
!(pattern_list) |
匹配不在 pattern_list 中的字符串. |
[...] |
POSIX style character classes inside sequences. |
舉例
- 匹配 docs 目錄下及子目錄所有 markdown 文件:
docs/**/*.md
- 匹配 大小寫的 bin 文件夾:
[Bb]in
各個語言提供的庫
- Javascript: https://github.com/isaacs/node-glob
- C#: https://github.com/kthompson/glob
- GO: https://github.com/gobwas/glob
沒列出來的,一般語言本身的庫提供的有相關功能。
本文地址:http://www.cnblogs.com/savorboard/p/glob.html
作者博客:Savorboard
本文原創授權為:署名 - 非商業性使用 - 禁止演繹,協議普通文本 | 協議法律文本