1 背景说明
首先要注意,通配符中的符号和正则表达式中的特殊符号具备不同的匹配意义,例如:*在正则表达式中表示里面是指匹配前面的子表达式0次或者多次,而在通配符领域则是表示代表0个到无穷个任意字符。
此外,要注意和bash环境的特殊符号要避开,\ | ; ~ $ & ! / > >> < << ‘’ “” `` () {}
使用的过程中一定要区分开。linux系统中,有些命令只支持通配符,有些则支持正则表达式。
支持正则表达式的命令:grep、vi、awk、sed 等
只支持通配符方式的命令:ls 、 cp 等
2 通配符学习
2.1 通配符: *
语义说明:表示的是0个或者多个任意字符
样例:
查询后缀是sql的文件名
ls *.sql
查询名称中开头是test的文件
ls test*
2.2 通配符:? 注意是英文的问号
语义说明:表示的是一定有一个任意字符,也就是说是占1个字符位置
样例:
查找名称是7个字符的文件名
ls ???????.*
查找名称是i和t中间有2个字符的文件名
ls i??t*.*
2.3 通配符:[字符集]
语义说明:表示匹配包括指定的字符集中的字符的结果
样例:
查找包括数字的文件名
ls *[0-9]*
查找包括小写字母的文件名
ls *[a-z]
*查找包括大写字母的文件名
ls *[A-Z]* 我的环境中查出来的结果区分不了大小写,原因不明,以后再研究一下。
查找开头不是数字的文件名
ls [^0-9]*
查找开头不是数字或者字母的文件名
ls [^0-9a-zA-Z]*
下面截图有个汉字的文件名被查出来
|
|
|