前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >认识 Glob Pattern

认识 Glob Pattern

作者头像
恋喵大鲤鱼
发布2024-07-22 07:59:36
50
发布2024-07-22 07:59:36
举报
文章被收录于专栏:C/C++基础

1.简介

在计算机编程中,Glob Pattern 是通配符匹配模式,它利用通配符来匹配一组文件或目录。

注意,Glob Pattern 不是一个统一的标准,而是一个在不同系统和工具中常见的模式匹配方式。虽然它们的基本概念相似,但具体实现和支持的特性可能会有所不同。

本文将介绍常见的通配符模式。

2.glob 是什么意思?

在“glob pattern”中,“glob” 是一个术语,用于描述一种文件名匹配的技术。这个术语最早来源于 Unix 系统,是 “global” 的缩写。

最初在 Unix 系统中,“glob” 是一个用于扩展通配符的命令。这个命令会读取包含通配符的模式,然后将其扩展为符合该模式的所有文件名列表。

glob 用于简化对一组文件或目录的操作。例如,你可以使用 *.txt 来匹配所有以 .txt 结尾的文件,而不需要一个一个地指定文件名。

现在,“glob” 已经成为许多操作系统、编程语言和工具中的标准术语,用来指代这种通配符模式匹配的方法。

3.通配符

如果字符串包含以下字符之一,则可以将其视为通配符模式 *, ?[...]

星号 *

匹配零个或多个字符。

例如 *.txt 匹配所有以 .txt 结尾的文件,如 file1.txt 和 document.txt。

data/* 匹配 data 目录下的所有文件和子目录。

问号 ?

匹配一个单一字符。

例如 file?.txt 匹配 file1.txt、fileA.txt,但不匹配 file.txt。

方括号 []

匹配方括号内的任意一个字符。

例如 file[123].txt 匹配 file1.txt、file2.txt 和 file3.txt。

方括号 [] 还可以指定字符的范围,它由两个字符表示,用破折号“-”分隔。

例如,模式[A-C]将匹配任何包含 ABC 的起始字符。

范围可以相互结合使用,形成强大的模式。您以前可能见过的一个常见模式是匹配字母数字字符串的模式:[A-za-z0-9]

这将匹配以下内容:

  • [A-Z] A到Z都是大写字母
  • [a-z] a到z都是小写字母
  • [0-9] 0到9之间的所有数字

这可以用于不同领域的字符串匹配,因为范围也可以在正则表达式中工作。

大括号 {}

匹配大括号内的任意一个模式,使用逗号分隔。

例如 file{1,2,3}.txt 匹配 file1.txt、file2.txt 和 file3.txt。

4.关于双星号 **

在通配符模式中,**(双星号)通常用于表示递归匹配多个目录层级的模式。这意味着它可以匹配任意深度的子目录。

双星号是对传统通配符模式的一个扩展,不同的工具和语言对 **的支持可能略有不同,但基本原理是类似的。

  • 在 Unix/Linux Shells 中

在传统的 Unix/Linux shell 中,如 Bash,** 通常不是默认支持的模式。但在某些 shell 中(如 Zsh)可以使用 ** 进行递归匹配。

例如,在 Zsh 中,**/*.txt 可以匹配当前目录及其所有子目录中的所有 .txt 文件。

  • 在 Node.js 的 glob 模块中

** 用于递归地匹配任意数量的子目录。例如,src/**/*.js 匹配 src 目录及其所有子目录中的所有 .js 文件。

示例:

代码语言:javascript
复制
const glob = require('glob');
glob('src/**/*.js', (err, files) => {
  console.log(files);
});
  • 在构建工具中

在许多构建工具和任务运行器中,** 用于递归匹配目录中的文件。例如,gulp、webpack 等工具中的配置文件中可以使用 ** 来匹配目录中的文件。

示例(Gulp):

代码语言:javascript
复制
gulp.src('src/**/*.js')
    .pipe(/* your processing here */);

5.反转

值得一提的一个特性是,globs 可以与改变模式工作方式的特殊字符一起使用。

这两个特殊字符是:

  • 感叹号 (!)
  • 反斜杠 ()

感叹号可以否定它前面的模式。在我上面分享的字符类示例中,我们使用了模式[123]

如果我们想要显式地过滤我们想要的结果,我们可以通过[!123]来否定该模式。

反斜杠用于删除通配符的特殊含义,以便它们可以在模式中使用。

6.小结

Glob Patterns 常用于脚本、命令行工具、构建系统(如 make)、以及许多编程语言中的文件操作库(如 Python 的 glob 模块),我们需要熟练掌握和使用。


参考文献

glob (programming) - wikipedia A Beginner’s Guide: Glob Patterns

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.简介
  • 2.glob 是什么意思?
  • 3.通配符
    • 星号 *
      • 问号 ?
        • 方括号 []
          • 大括号 {}
          • 4.关于双星号 **
          • 5.反转
          • 6.小结
          • 参考文献
          相关产品与服务
          命令行工具
          腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档