glob | 路径名文件名的匹配和填充
简介
大家应该都用过类似 *.jpg, file[0-9].txt之类带有通配符的表达式。将这类表达式展开成为一个匹配路径名列表的程序就被称作glob。
早在UNIX V6中,/etc/glob就被用来展开通配符模式。现在几乎所有的shell都内置了glob。
规则
glob的通配符比正则表达式要简单的多。glob所识别的通配符只有 ?, *, [。
?匹配任意单个字符。例如,ls ??? 会列出所有文件名为三个字符的目录和文件。
* 匹配任意串(包括空串)。比如:*.jpg
[...] 表示字符类,表示能匹配到方括号中的任意字符的字符。[ak]* 表示字符 a 或 k 开头的所有文件。
如果 ! 紧跟在 [ 之后则表示不能匹配方括号中字符的字符,[!...] 类似于正则表达式中的 [^...]。[!ak]* 表示不以字符 a 或 k 开头的所有文件。
字符类不能为空,直接使用 [] 会被理解为字面意义。
字符类中可以使用 - 表达范围,类似于正则表达式。[a-z] 表示所有小写字符。
如果要表达 ?, *, [ 字符本身,需要使用反斜杆 \ 转义。
glob不是正则表达式。glob是用来展开路径名的,在规则上与正则表达式有很大的不同。
参考资料:
[1] man glob(7)

浙公网安备 33010602011771号