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)

posted @ 2020-10-26 23:55  DDKK64  阅读(681)  评论(0编辑  收藏  举报