什么是 Glob?
Glob 是一种使用通配符字符来指定文件名或路径集合的模式匹配语法。它起源于 Unix shell,现在广泛用于编程语言、构建工具和文件系统。
快速了解
| 全称 | Glob 模式 / 通配符匹配 |
|---|---|
| 创建时间 | 1971 年(Unix glob 命令) |
| 规范文档 | 官方规范 |
工作原理
Glob 模式使用特殊字符来匹配多个文件或目录。星号(*)匹配任意字符序列,问号(?)匹配任意单个字符,方括号 [] 匹配字符集。扩展 glob 语法中的双星号(**)递归匹配目录。Glob 比正则表达式简单,但足以满足大多数文件匹配需求。它用于 .gitignore 文件、构建配置和命令行操作。
主要特点
- * 匹配任意字符序列(路径分隔符除外)
- ? 精确匹配一个字符
- [] 匹配集合中的任意字符
- ** 递归匹配目录(扩展 glob)
- ! 或 ^ 否定字符集
- 语法比正则表达式更简单
常见用途
- 构建工具中的文件选择(webpack、gulp)
- .gitignore 中的文件排除模式
- 命令行文件操作(ls *.txt)
- 测试框架中的测试文件发现
- 构建过程中的资源打包和复制
示例
loading...
Loading code...常见问题
Glob 模式和正则表达式有什么区别?
Glob 模式更简单,专为文件路径匹配设计,使用 * 和 ? 等通配符。正则表达式更强大但也更复杂,支持量词、分组和前瞻等高级模式匹配。Glob 足以满足大多数文件操作需求,而正则表达式适用于复杂的文本处理。
Glob 模式中的双星号(**)是什么意思?
双星号(**)是扩展 glob 语法,用于递归匹配目录。例如,'src/**/*.js' 匹配 src 目录及其任意深度子目录中的所有 JavaScript 文件。
如何使用 Glob 模式排除文件?
在大多数工具中,可以使用感叹号(!)来否定模式。例如,在 .gitignore 中,'*.log' 后跟 '!important.log' 将忽略所有日志文件,但保留 important.log。否定模式必须在包含模式之后。
Glob 模式是否区分大小写?
Glob 模式的大小写敏感性取决于操作系统和使用的工具。在 Unix/Linux 系统上,glob 通常区分大小写,而在 Windows 上通常不区分。许多工具提供了显式控制大小写敏感性的选项。
Glob 模式中 * 和 ** 有什么区别?
单个星号(*)匹配单个路径段内的任意字符序列(不会跨越目录边界)。双星号(**)可以跨越目录边界匹配,允许递归匹配多个目录层级。