一、Glob 是什么?
glob 是一种文件匹配模式,全称 global,它起源于 Unix 的 bash shell 中,比如在 linux 中常用的 mv *.txt tmp/ 中,*.txt 就使用到了这种模式。
二、Glob 有哪些用途?
在计算机编程中,经常需要对文件或者文件夹进行操作,那么会经常涉及到一些文件或者文件夹的匹配操作。大家最熟悉的应用的地方可能给就是 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
没列出来的,一般语言本身的库提供的有相关功能。