1. 一般通配符
通配符是一种用来模糊匹配的特殊语句。主要用来进行文件名匹配、路径名搜索、字符串查找等。常见的通配符有如下四种。
*(星号)
匹配任意字符的任意组合的0次或多次出现。例如,f*
可以匹配f
、fa
、fab
等,即匹配以f打头的任意字符串。
注意,文件名前面的圆点.
和路径名中的斜线/
必须显式匹配。例如,模式*file
不能匹配.profile
。模式/etc*.c
不能匹配在/etc
目录下带有后缀.c
的文件,而模式/etc/*.c
才能匹配这些文件。
?(问号)
匹配任意一个字符。例如,f?
可以匹配f1
、fa
、fb
等,但不能匹配f
、fabc
、f12
等。
[字符组]
匹配该字符组内所限定的任何一个字符。例如,f[abcd]
可以匹配fa
、fb
、fc
等,但不能匹配f
、fabc
、f12
等。
用这种通配符,方括号内的字符组可以用连字符-
方便地给出,例如f[a-d]
表示f[abcd]
,f[1-9]
表示f[123456789]
。
!(感叹号)
如果它紧跟在一对方括号的左方括号[
之后,表示不匹配在这个方括号内的字符。例如,f[!0-9].c
表示以f
开头,后面一个字符不是数字的,后缀是.c
的文件。
2. 模式表达式
上面几种普通的通配符基本上都是匹配一些单个的字符,或者一组任意的字符。bash 除了支持上面几种普通的通配符外,还提供特有的扩展模式匹配表达式,下面介绍其含义。
*(模式表)
匹配给定模式表中0次或多次出现的模式,各模式间以|
分开。例如,file*(.c | .o)
将匹配文件file
、file.c
、file.c.c.c
、file.c.o.c
等。
+(模式表)
匹配给定模式表中一次或多次出现的模式,各模式之间以|
分开。 例如,file+(.c | .o)
将匹配文件file.c
、file.c.c.c
、file.c.o.c
等 ,但不匹配file
。
?(模式表)
匹配模式表中任意一种0次或1次出现的模式,各模式之间以|
分开,例如,file?(.c | .o)
将匹配file
、file.c
、file.o
等。
@(模式表)
仅匹配模式表中模式只一次出现的模式,各模式之间以|
分开。例如,file@(.c | .o)
匹配file.c
和file.o
,但不匹配file
、file.c.o
等。
!(模式表)
除给定模式表中的模式外,它可以匹配任意东西。
1 条评论
值得学习