首页 > 编程笔记 > Linux笔记 阅读:1

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]”表示不是数字的字符范围,“*”表示任意字符,因此会列出第一个字符不是数字,并且后续为任意字符的文件名。

相关文章