因为 shell 频繁地使用文件名,所以shell有一个使命令行强大的特性, shell 提供了特殊字符来帮助我们快速指定一组文件名。这些特殊字符叫做通配
符。使用通配符(也以文件名代换著称)允许我们依据字符类型来选择文件名。下表列出这些通配符以及它们所选择的对象:通配符 | 意义 |
* | 匹配任意多个字符(包括零个或一个) |
? | 匹配任意一个字符(不包括零个) |
[characters] | 匹配任意一个属于字符集中的字符 |
[!characters] | 匹配任意一个不是字符集中的字符 |
[[:class:]] | 匹配任意一个属于指定字符类中的字符 |
字符类 | 意义 |
[:alnum:] | 匹配任意一个字母或数字 |
[:alpha:] | 匹配任意一个字母 |
[:digit:] | 匹配任意一个数字 |
[:lower:] | 匹配任意一个小写字母 |
[:upper] | 匹配任意一个大写字母 |
模式 | 匹配对象 |
* | 所有对象 |
g* | 文件名以“ g”开头的文件 |
b*.txt | 以”b” 开头,中间有零个或任意多个字符,并以”.txt” 结尾的文件 |
Data??? | 以“ Data”开头,其后紧接着 3 个字符的文件 |
[abc]* | 文件名以”a”,”b”, 或”c” 开头的文件 |
BACKUP.[0-9][0-9][0-9] | 以”BACKUP.” 开头,并紧接着 3 个数字的文件 |
[[:upper:]]* | 以大写字母开头的文件 |
[![:digit:]]* | 不以数字开头的文件 |
*[[:lower:]123] | 文件名以小写字母结尾,或以“ 1”,“ 2”,或“ 3”结尾的文 |
接受文件名作为参数的任何命令,都可以使用通配符。
字符范围如果我们用过别的类 Unix 系统的操作环境,或者是读过这方面的书籍,你可能遇到过 [A-Z] 或 [a-z] 形式的字符范围表示法。这些都是传统的 Unix 表示法,并且在早期的 Linux 版本中仍有效。虽然它们仍然起作用,但是你必须小心地使用它们,因为它们不会产生你期望的输出结果,除非你合理地配置它们。从现在开始,你应该避免使用它们,并且用字符类来代替它们。通配符在 GUI 中也有效
通配符非常重要,不仅因为它们经常用在命令行中,而且一些图形文件管理器也支持它们。• 在 Nautilus (GNOME 文件管理器)中,可以通过 Edit/Select 模式菜单项来选择文件。输入一个用通配符表示的文件选择模式后,那么当前所浏览的目录中,所匹配的文件名就会高亮显示。• 在 Dolphin 和 Konqueror( KDE 文件管理器)中,可以在地址栏中直接输入通配符。例如,如果你想查看目录/usr/bin 中,所有以小写字母 ‘u’ 开头的文件,在地址栏中敲入 ‘/usr/bin/u*‘,则文件管理器会显示匹配的结果。最初源于命令行界面中的想法,在图形界面中也适用。这就是使 Linux 桌面系统如此强大的众多原因中的一个