glob | 路径名文件名的匹配和填充

简介

大家应该都用过类似*.jpg, file[0-9].txt之类带有通配符的表达式。将这类表达式展开成为一个匹配路径名列表的程序就被称作glob

早在UNIX V6中,/etc/glob就被用来展开通配符模式。现在几乎所有的shell都内置了glob。

规则

glob的通配符比正则表达式要简单的多。glob所识别的通配符只有'?', '*', '['。

'?'(不在方括号内的)匹配任意但个字符。

'*'(不在方括号内的)匹配任意串(包括空串)。

"[...]"表示字符类,表示能匹配方括号中的任意字符的字符。如果'!'紧跟在'['之后则表示不能匹配方括号中字符的字符。字符类不能为空。因此"[][!]"会匹配']', '['和'!'。

'?', '*', '['可使用反斜杆''转义。

需要注意,glob不是正则表达式。glob是用来展开路径名的,在规则上与正则表达式有很大的不同。正则表达式中常用'[^...]'来对字符类取补,但在POSIX这是未定义的。尽管有的shell确实支持这样的表达方式。


参考资料:
[1] man glob(7)

原文地址:https://www.cnblogs.com/wyzersblog/p/13882231.html