通配符是一种特殊语句,主要有型号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名,参数名)。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。
终端里面输入的通配符是由Shell处理的,不是由所涉及到命令语句处理的,它只会出现在命令的“参数值”里(它不用在命令名称里,命令不记得,那就用Tab补全)。当Shell在“参数值”中遇到了通配符时,Shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行代换(路径扩展);否则就将该通配符作为一个普通字符传递给“命令”,然后再由命令进行处理。总之,通配符实际上就是一种Shell实现的路径扩展功能。在通配符被处理后,Shell会先完成该命令的重组,然后再继续处理重组后的命令,直至执行该命令。
先使用 touch 命令创建2个文件,后缀都为 txt:
$ touch aaaadddd.txt wwwweeee.txt
可以给文件随意命名,假如过了很长时间,你已经忘了这两个文件的文件名,现在你想在你大堆其他文件中找到这两个文件文本,就可以使用通配符:
$ ls *.txt
在创建文件的时候,如果需要一次性创建多个文件,比如: “love_1_linux.txt , love_2_linux.txt , ... love_10_linux.txt”。 在Linux中十分方便:
$ touch love_{1..10}_linux.txt
Shell 常用通配符:
字符 | 含义 |
---|---|
* | 匹配 0 或多个字符 |
? | 匹配任意一个字符 |
[list] | 匹配 list 中的任意单一字符 |
[!list] | 匹配 除list 中的任意单一字符以外的字符 |
[c1-c2] | 匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z] |
{string1,string2,...} | 匹配 sring1 或 string2 (或更多)其一字符串 |
{c2..c2} | 匹配 c1-c2 中全部字符 如{1..10} |