/ 写在前面 – 我热爱技术、热爱开源。我也相信开源能使技术变得更好、共享能使知识传播得更远。但是开源并不意味着某些商业机构/个人可以为了自身的利益而一味地索取,甚至直接剽窃大家曾为之辛勤付出的知识成果,所以本文未经允许,不得转载,谢谢。/
通配符及它们所选择的对象
通配符 意义
------ ------
* 匹配任意多个字符(0个或多个)
? 匹配任意一个字符(不包括0个)
[characters] 匹配任意一个属于字符集中的字符
[!characters] 匹配任意一个不属于字符集中的字符
[[:class]] 匹配任意一个属于指定字符类中的字符
常用的字符类
字符类 意义
------ ------
[:alnum:] 匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:digit:] 匹配任意一个数字
[:lower:] 匹配任意一个小写字母
[:upper:] 匹配任意一个大写字母
范例
Pattern 匹配对象
------- -------
* 所有文件
g* 文件名以“g”开头的文件
b*.txt 以“b”开头,中间有0个或任意多个字符,并以“.txt“结尾的文件
Data??? 以”Data“开头,其后紧接着3个字符的文件名
[abc]* 以”a“、”b“或”c“开头的文件名
BACKUP.[0-9][0-9] 以”BACKUP.“开头,然后紧接着2个数字的文件名
[[:upper:]]* 以大写字母开头的文件名
[![:digit:]]* 非数字开头的文件名
*[[:lower:]123] 以小写字母或“1”、”2“、“3”结尾的文件名
在Shell中,接受文件名作为参数的任何命令,都可以使用通配符。
注意: [A-Z]
、 [a-z]
这种表示法都是传统的Unix表示法,在早期的Linux版中仍然支持。不过,以后我们应当避免使用他们,使用字符类来带代替他们。