File Globbing

File Globbing

File Globbing 是 shell 提供的一种简单字符匹配机制,用于匹配文件名

很像正则但不是正则

说起字符匹配很多人第一反应可能是正则表达式(regular expression)。诚然,正则表达式是最常用的机制,但其只是字符匹配的一种实现方式,可以认为 File Globbing 是正则的一种简化形式。

wildcard

wildcard 是一个特殊的字符,可以用它当做占位符,可以表示任意字符:

  1. * 表示 0 个或多个任意字符
  2. ? 表示一个任意字符

字符集合 (character set)

用于匹配时,一般使用方括号 [] 表示字符集合, e.g.

[afg] 表示一个字符,这个字符必须是小写 a 或 f 或 g

用 hyphen (-) 可以表示 range, e.g.

  • [a-f] 表示一个字符,这个字符必须在英文字母表中 a 到 f 之间(小写)
  • [A-Z] 表示任意一个大写英文字符
  • [1-9] 表示任意一个阿拉伯数字
  • [a-zA-Z] 表示任意一个英文字母

集合同样支持非操作,在逻辑上表示“不在此集合中”的字符, 在集合前面追加一个 caret(^)。

  • [^2-6] 表示一个字符,这个字符不是数字 2,3,4,5,6
  • [^2-6a-z] 表示一个字符,这个字符不是数字 2,3,4,5,6 也不是小写字母