除了以下特殊字符,其他任意都可以匹配。特殊字符可以使用 \
转义。
*
匹配任意字符,包括 null
。
如果 globstar
开启,*
可用于文件名扩展,**
可匹配所的文件、多级目录和子目录,如果以 /
结尾,将会只匹配目录。
?
匹配单个字符
[...]
匹配[]
出现的任何一个字符。
一对字符,-
连接,表示范围,比如:[a-z]
[
后面出现,!
、^
表示非,匹配[]
中以外的字符。
-
出现在第一个或者最后一个,可匹配 -
。
]
出现在第一个可匹配]
。
[:class:]
表示一类字符。可匹配这一类字符中的任意一个。
字符 | 含义 |
---|---|
alnum | 字母与数字字符 |
alpha | 字母 |
ascii | ASCII字符 |
blank | 空格或制表符 |
cntrl | ASCII控制字符 |
digit | 数字 |
graph | 非控制、非空格字符 |
lower | 小写字母 |
upper | 大写字母 |
space | 空白字符,包括垂直制表符 |
可打印字符 | |
word | 单词字符 |
punct | 标点符号字符 |
xdigit | 十六进制数字 |
扩展模式匹配
shopt -s extglob
,开启扩展模式。
pattern-list 可以是按 |
分隔的多个模式。
?(pattern-list)
匹配 0 次或者 1次
*(pattern-list)
匹配 0 次或者 多次
+(pattern-list)
匹配 1 次或者 多次
@(pattern-list)
匹配 1 次
!(pattern-list)
匹配除此之外的任意模式
复杂的模式匹配,匹配长字符串时,会比较慢。特别是,多个模式,并且字符串可匹配上多个模式。
可使用分开的模式和短字符串。 或者使用字符串数组,可能会快些。