Linux通配符的用法(附带实例)
在 Linux 中,如果需要模糊匹配文件名或目录名,就要用到通配符。
下面通过一张表格介绍常用的通配符:
例如:
下面通过一张表格介绍常用的通配符:
通配符 | 作用 |
---|---|
? | 匹配一个任意字符 |
* | 匹配 0 个或任意多个任意字符,也就是可以匹配任何内容 |
[] | 匹配中括号中任意一个字符。例如,[abc] 代表一定匹配一个字符,或者是 a,或者是 b,或者是 c |
[-] | 匹配中括号中任意一个字符,“-”代表一个范围。例如,[a-z] 代表匹配一个小写字母 |
[^] | 逻辑非,表示匹配不是中括号内的一个字符。例如,[^0-9] 代表匹配一个不是数字的字符 |
例如:
[root@localhost~]# mkdir /root/test.d [root@localhost~]# cd /root/test.d/ #创建并进入test.d目录 [root@localhost test.d]# touch .abc ./abcd ./abc ./012 ./0abc #在目录中创建多个测试文件 [root@localhost test.d]# ls ?abc 0abc命令结果中的“?”需要匹配一个字符,可以匹配到 0abc 文件的 0,但是不能匹配 abc,因为“?”不能匹配空。
[root@localhost test.d]# ls * 012 0abc abc abcd“*”表示 0 或任意多个字符,因此匹配到了当前目录下的所有文件。
[root@localhost test.d]# ls ab[c|d] abc abcd“[]”中可以写入任意多个字符并匹配“[]”中的任意一个字符,在当前案例中表示列出文件名 abc 后出现 c 或 d 的文件,因此列出了 abc 和 abcd 两个文件。因为 abc 文件后并没有 c 或 d 字符,所以不会列出。
[root@localhost test.d]# ls [0-9]* 012 0abc“[0-9]”表示为数字,“*”表示为任意字符,因此会列出第一个字符为数字,剩余部分为任意字符的文件名。
[root@localhost test.d]# ls [^0-9]* abc abcd“[^0-9]”表示不是数字的字符范围,“*”表示任意字符,因此会列出第一个字符不是数字,并且后续为任意字符的文件名。