【bash中的通配符】
在 Bash 中,如果需要模糊匹配文件名或目录名,就要用到通配符。下面为常用的通配符
【通配符】 【说明】
* 匹配0或任意个字符
? 匹配一个任意字符
[-] 匹配中括号的字符。例如[a-b],匹配小写字母,只会匹配集合中的一个
[^]或[!] 匹配除了中括号的一个字符。例如[^0-9],匹配除了数字的字符,只会匹配集合中的一个
{ab,ba} 匹配其中一个字符串。例如匹配ab或ba
[[:class:]] 匹配属于字符类class中的任意单个字符
常见的字符类包括:
[:alnum:]:匹配任意一个字母和数字字符。
[:alpha:]:匹配任意一个字母字符。
[:blank:]:匹配空格和制表符。
[:digit:]:匹配任意一个数字字符。
[:graph:]:匹配任意一个可打印字符(不包括空格)。
[:lower:]:匹配任意一个小写字母。
[:print:]:匹配任意一个可打印字符(包括空格)。
[:punct:]:匹配任意一个标点符号。
[:space:]:匹配任意一个空白字符,包括空格、制表符、换页符等。
[:upper:]:匹配任意一个大写字母。
[:xdigit:]:匹配任意一个十六进制数字字符。
下面是一些验证实例:
[apps@test-001 ~]$ touch lmgs
[apps@test-001 ~]$ ls l[!o]gs
lmgs
[apps@test-001 ~]$ ls l[^o]gs
lmgs
[apps@test-001 ~]$ ls l{og,mg}*
lmgs
logs:
csp nacos
据此我们创建文件的时候可以根据通配符精确创建需要的文件,例如
[apps@test-001 ~]$ touch steven{mama,baba}.log
[apps@test-001 ~]$ ls steven*
stevenbaba.log steven.json stevenmama.log steven.txt
【验证字符类的实例】
[apps@test-001 ~]$ touch l12345gs
[apps@test-001 ~]$ ls l[[:alnum:]]*
l12345gs lmgs
logs:
csp nacos
【中间不出现数字的文件[![:digit:]]】
[apps@test-001 ~]$ ls l[![:digit:]]gs
lmgs
logs:
csp nacos
~]$ ls l[^[:digit:]]gs
lmgs
logs:
csp nacos
【综上:通过以上实验,我们可以看到在通配符中相反的含义[^]或[!]两者实现的效果是等价的】