不喜欢广告? 无广告 今天

Shell Glob Pattern Tester

数据开发人员文本
广告 移除?
使用 *(任意字符)、?(一个字符)、**(任意路径)、[abc](字符类)、{a,b}(替代项)。前缀 ! 可以反转匹配。
不同的 shell 对 *、**、? 和 大括号的解释方式不同。输出下方的说明解释了这些差异。
匹配结果将显示在这里。
广告 移除?

指导

Shell Glob Pattern Tester

Shell Glob Pattern Tester

将 glob 模式与文件路径列表进行对比,实时查看哪些路径匹配——支持 Bash、Zsh、.gitignore、Python 和 Go 的语义。 fnmatch,以及 Go path.Match. 输入一个模式如 src/**/*.{js,ts},粘贴路径,随着输入,匹配项会高亮为绿色,不匹配项则逐渐变灰。

如何使用

  1. 全局模式 字段中输入一个 glob 模式(例如 **/*.log).
  2. 选择一个 Shell / 模式 ——相同的模式在 Bash、.gitignore、Python fnmatch或 Go 中可能匹配不同的路径集合。
  3. 将您的 文件路径 每行一个——或者点击内置示例。
  4. 匹配项以绿色并带有勾号高亮;不匹配项保持灰色。摘要部分显示匹配数量以及你选择的模式说明。
  5. 在模式前加上 ! 以反转匹配(高亮所有不匹配的路径)。 不是 匹配

特征

  • 五种 shell 模式 – Bash(带 globstar)、Zsh extended_glob、.gitignore、Python fnmatch,以及 Go path.Match,每种模式均具有正确的语义,包括括号扩展。 *, **, ?实时高亮
  • – 随着你输入模式,路径会实时重新评估;无需提交按钮。 括号扩展
  • 在 Bash 和 Zsh 模式中支持替代项,包括嵌套和交叉组合如 - {a,b,c} 字符类 src/{js,ts}/**/*.{spec,test}.ts.
  • 否定类,以及范围如 - [abc], [!abc] 否定 [A-Z].
  • – 在任何模式前加上 以翻转匹配。 ! 模式说明
  • – 每个结果下方会显示一段简短说明,解释所选模式如何解释该模式。 – 可加载一个网页项目布局、一个 .gitignore 风格的日志过滤器或一个文档/README 示例,通过观察学习。
  • 快速示例 – 模式和路径始终保留在你的浏览器中;加载后可离线使用。
  • 仅客户端 调试 .gitignore 规则

常见用例

  • – 粘贴来自 的路径列表,查看哪些路径会被候选规则忽略。 git status 编写构建 glob 参数
  • – 验证输入到 的模式是否匹配你期望的文件,且不会匹配其他文件。 tsc, esbuild, 或者 prettier --write 编写 CI 路径过滤器
  • – 确认 GitHub Actions 或 GitLab CI 中的过滤器在推送前命中正确的文件子集。 翻译 shell 脚本 paths: – 验证在将代码从 Bash 移植到 Python 或 Go 服务后,模式是否仍然有效。
  • 教学 glob 语义 – 向学生展示为什么
  • 在 Bash 中不会跨越目录边界,但在 中会。 * 在 glob 模式中,* 和 ** 有什么区别? fnmatch.

常问问题

  1. 一个

    匹配单个路径段内的任意字符,但不会跨越目录分隔符( * )。双星号/(称为 globstar)匹配任意数量的字符,跨越任意数量的目录段。因此 ** 可以匹配,而 src/*.js 匹配 src/index.js 但不提供 src/utils/index.js可以匹配两者。并非所有 glob 语法都支持 src/**/*.js ——Python ** 和 Go fnmatch 将两个星号视为两个独立的 path.Match 如何在 glob 匹配中与正则表达式不同? * 标记。

  2. Glob 是一种更小的模式语言,专为匹配文件路径而设计。大多数字符是字面字符:

    ,以及(在某些 shell 中) *, ?, [...]是唯一的元字符。没有量词语法,没有锚点,没有前瞻/后顾,也没有回引用。实现通常会将 glob 转换为正则表达式,但用户无需使用正则表达式思维。Glob 有意设计得简单,以使 shell 命令行保持简短和可预测。 {...} 为什么括号扩展在所有 glob 语法中都不支持?

  3. 括号扩展(

    展开为三个替代项)是 Bash 和 Zsh 中的技术特性,在 glob 匹配前被 shell 评估。Shell 会先将括号表达式展开为多个参数,然后独立匹配生成的文件 glob。像{a,b,c} (在 git )等工具使用的纯 glob 库不实现括号扩展,因为这并非真正属于 glob 语言的一部分——它只是 shell 层级的预处理步骤。 .gitignore在 glob 模式中,前置 ! 有什么含义? fnmatch,以及 Go path.Match 其确切含义取决于上下文。在字符类中,

  4. 会否定该类——匹配除

    之外的任意单个字符。作为整个模式的前缀, [!abc] 主要是一个 a, b, 或者 c功能,用于重新包含之前被忽略的路径。大多数 shell 并不会将模式前缀的 ! 视为否定——它们要么报错(Zsh 历史扩展),要么直接传递。在本测试器中,前置的 .gitignore 被解释为一个便利功能:它会反转匹配,使未匹配的路径高亮为绿色。 ! 例如,src/**/*.{js,ts} ! src/index.jssrc/utils/helpers.tsREADME.md...

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 移除?
广告 移除?
广告 移除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 移除?