发布时间: 2018-08-23 13:30:00
通配符:想查找某一类的字符,满足某种类型的文件
这些不是具体的值,要怎么使用计算机去表示? 需要借助通配符去匹配,模糊的匹配
创建几个文件
[root@togogo xx]# touch 1a_x 1-1x_2 a2_y
查看文件是否被创建成功
[root@togogo xx]# ls
想查找文件名第一位是数字,第二位是字母的文件
[root@togogo xx]# ls [0-9][a-z]*
想查找文件名第一位是数字,第二位是a或‘-’或2的文件
[root@togogo xx]# ls [0-9][a\-2]*
再创建一个文件
[root@togogo xx]# touch Axx
[root@togogo xx]# ls
1-1x_2 1a_x a2_y Axx
查询开头是字母的文件
[root@togogo xx]# ls [a-z]*
a2_y Axx
通配符是[a-z] 虽然是小写的,但是也包含了大写字母
[root@togogo xx]# ls [A-Z]*
Axx
通配符是[A-Z]*,只查找大写开头的文件
[root@togogo xx]# ls
1-1x_2 1a_x a2_y Axx
想查找以数字开头的文件
[root@togogo xx]# ls [[:digit:]]*
想查找以大写字母开头的文件
[root@togogo xx]# ls [[:upper:]]*
想查找数字或字母开头的文件
[root@togogo xx]# ls [[:alnum:]]*
----------------
查找一下 vsftp的安装包的位置,可以查询到文件
[root@togogo xx]# yum list vsftp*
现在创建文件 vsftpxxx
[root@togogo xx]# touch vsftpxxx
再查找vsftp的安装包,发现查找不到
[root@togogo xx]# yum list vsftp*
为什么?
因为“*”是通配符,yum是在shell上执行的,也就是说yum是shell的子进程
先在shell就对“*”进行解析,解析成vsftpxxx,然后在yum查询的时候使用vsftpxxx
需要在shell中排除“*”号的意义,使用“\”进行转义,在yum中查找以vsftp开头的文件
[root@togogo xx]# yum list vsftp\*
也可以使用单引号 ‘vsftp*‘,因为shell不会识别单引号里面的特殊字符的
[root@togogo xx]# yum list 'vsftp*'
删除vsftpxx文件
[root@togogo xx]# rm -rf vsftpxxx
再使用vsftp* 能查找到,因为在shell中不会进行解析,直接去yum中解析
[root@togogo xx]# yum list vsftp*
像 * ? 等符号是不能匹配 点的,就是不能匹配隐藏文件
创建一个隐藏文件
[root@togogo xx]# touch .xxxx
[root@togogo xx]# rm -rf *
[root@togogo xx]# ls -a
. .. .xxxx
发现带点的文件还在,不会进行匹配
上一篇: {华为 HCIE-R&S}NTP时钟