Skip to content

Instantly share code, notes, and snippets.

@GloryAlex
Last active November 26, 2021 07:15
Show Gist options
  • Save GloryAlex/d2c956418af833a960f45e20f83ddc31 to your computer and use it in GitHub Desktop.
Save GloryAlex/d2c956418af833a960f45e20f83ddc31 to your computer and use it in GitHub Desktop.
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。

元字符

元字符 说明
* 匹配除了斜杠(/)之外的所有字符。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 中的字符串.
[:alnum:] 匹配单个字母或数字
[:alpha:] 匹配单个字母
[:digit:] 匹配单个数字
[:lower:] 匹配单个小写字母
[:upper:] 匹配单个大写字母
[abc] 匹配a或b或c字符
[...] POSIX style character classes inside sequences.

常用符号说明

  • 星号(*)匹配零个或多个任意字符
  • [abc] 匹配任何一个列在方括号中的字符。这个例子要么匹配一个a,要么匹配一个b,要么匹配一个c
  • 问号(?)只匹配一个任意字符
  • 如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的所有字符(如,[0-3a-c]和[0123abc]是等价的)
  • 使用两个星号(*) 表示匹配任意中间目录。比如 a/**/z 可以匹配 a/za/b/z 或 a/b/c/z

常用模式

匹配 模式
所有文件 *
以g开头的任意文件 g*
以b开头,扩展名为.txt 的文件 b*.txt
以Data 开头并紧接了个字符的文件 Data???
以a、b、c中任意字符开头的文件 [abc]*
以BACKUP.开头并紧接3个数字的文件 BACKUP.[0-9][0-9][0-9]
以单个大写字母开头的文件 [[:upper:]]*
不以数字开头的文件 [![:digit:]]*
以小写字母或 1、2、3中任意数宇结尾的文件 *[[:lower:]123]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment