通配符
在开始使用命令之前,我们需要介绍一个使命令行如此强大的shell特性。
由于shell需要经常使用文件名,因此它提供了一些特殊的字符来帮助你快速指定一组文件名,这些特殊字符称之为通配符。
通配符(也叫文件名替换)允许用户依据字符模式选择文件名,如下图示例
通配符 | 匹配项 |
---|---|
* | 匹配任意多个字符(包括0个和1个) |
? | 匹配任一单个字符(不包括0个) |
[characters] | 匹配任意一个属于字符集中的字符 |
[!characters] | 匹配任意一个不属于字符集中的字符 |
[[:class:]] | 匹配任意一个属于指定字符类中的字符 |
下表列出了最常用的字符类
字符类 | 匹配项 |
---|---|
[:alnum:] | 匹配任意一个字母或数字 |
[:alpha:] | 匹配任意一个字母 |
[:digit:] | 匹配任意一个数字 |
[:lower:] | 匹配任意一个小写字母 |
[:upper:] | 匹配任意一个大写字母 |
通配符的使用使得文件名构建复杂的筛选标准成为可能。下表列出了一些通配符模式及其匹配内容的示例。
模式 | 匹配项 |
---|---|
* | 所有文件 |
g* | 以g开头的任一文件 |
b*.txt | 以b开头,中间有任意多个字符,并以.txt结尾的任一文件 |
Data??? | 以Data开头,后面跟3个字符的任一文件 |
[abc]* | 以abc中的任一个开头的任一文件 |
BACKUP.[0-9][0-9][0-9] | 以BACKUP.开头,后面紧跟3个数字的任一文件 |
[[:upper:]]* | 以大写字母开头的任一文件 |
[![:digit:]]* | 不以数字开头的任一文件 |
*[[:lower:]123] | 以小写字母或数字1,2,3中的任一个结尾的任一文件 |
通配符可以与任一个使用文件名为参数的命令一起使用。