开发者学堂课程【Linux文件管理命令:文件通配符】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/591/detail/8342
文件通配符
内容介绍
一、知识回顾
二、文件通配符
三、预定义的字符类:man 7 glob
四、练习
五、创建空文件和刷新时间
一、知识回顾
常见目录结构:
/boot:启动相关
/home:用户家目录
/root:根目录
/etc:存放配置 /etc/profile.d/env.sh ;etc/profile HISTSIZE ; etc/issue;/etc/motd ; /etc/DIR_COLOR ; etc/centos-release;
/dev:存放设备,sda,sr0,zero,null,random
/bin:存放用户用的二进制程序
/sbin:存放管理员用的二进制程序
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/var:存放变量 /var/log/;/var/www/html /var/spool/mail
/tmp:存放临时文件
/proc:存放和进程相关信息,内存信息
/sys:存放和硬件相关文件
/usr:存放操作系统绝大部分文件
/opt:存放用户数据
/selinux:存放 selinux
二、文件通配符
(1) * 匹配零个或多个字符
练习:
1
[root@centos7 ~]# cd/data
2
[root@centos7 data]# ls
3
[rootacentos7 data]# touch f{a..z}.txt
4
[root@centos7 data]# ls
5
fq.txt fs.txt fa.txt fc.txt fe.txt fg.txt fi.txt fk.txt f1.txt fn.txt fm.txt fp.txt fo.txt fr.txt ft.txt fu.txt fv.txt fx.txt fw.txt fy.txt fz.txt fb.txt fd.txt ff.txt fh.txt fj.txt
6
[root@centos7 data]# touch f{a..z}.conf
7
[root@centos7 data]#ls
8
fa.conf fc.txt ff.conf fh.txt fk.conf fm.txt fp.txt fp.conf fr.txt fs.conf fu.txt fu.conf fw.txt fx.conf fz.txt fz.conf fa.txt fd.conf ff.txt fi.conf fk.txt fn.txt fn.conf fs.txt fx.txt fb.txt fb.conf fc.conf fe.txt fd.txt fe.conf fg.txt fg.conf fh.conf fi.txt fi.txt fj.conf f1.txt fm.conf f1.conf fo.txt fo.conf fq.txt fr.conf fq.conf ft.txt ft.conf fv.txt fw.conf fv.conf fy.txt fy.conf
9
[root@centos7 data]# ls *.conf
10
fa.conf fd.conf fg.conf fj.conf fm.conf fp.conf fs.conf fv.conf fy.conf fb.conf fe.conf fh.conf fk.conf fn.conf fq.conf ft.conf fx.conf fw.conf fz.conf fc.conf ff.conf fi.conf f1.conf fo.conf fr.conf fu.conf
11
[root@centos7 data]# ls f*.txt
12
fa.txt fc.txt fe.txtfq.txt fi.txt f1.txt fk.txt fm.txt fo.txt fq.txt fs.txt fu.txt fw.txt fy.txt fz.txt fb.txt fd.txt ff.txt fh.txt fi.txt fn.txt fp.txt fr.txt ft.txtfv.txt fx.txt
13
[root@centos7 data]# ls *h*
14 fh.conf fh.txt
(2) ? 匹配任何单个字符
练习:
1
[root@centos7 data]# touch f{A..Z}{1..10}.conf
2
[root@centos7 data]# ls f?.conf
3 fa.conf fd.conf fg.conf fj.conf fm.conf fp.conf fs.conf fv.conf fy.conf fb.conf C.conf fe.conf fh.conf fk.conf fn.conf fq.conf ft.conf fw.conf fz.conf ff.conf fi.conf f1.conf fo.conf fr.conf fu.conf fx.conf
(3) ~ 当前用户家目录
练习(输出结果过长,此处不予展示,可观看视频自行练习):
1
[root@centos7 data]# ls
~
2
[root@centos7 data]# ls /root
3 [root@entos7 data]# ls ~wang
(4) ~mage 用户 mage 家目录
(5) ~+ 当前工作目录
(6) ~- 前一个工作目录
(7) [0-9] 匹配数字范围
练习(输出结果过长,此处不予展示,可观看视频自行练习):
1
[root@centos7 wang]# ls f
?[0-9].*
2
[root@centos7 wang]# ls “f
?[0-9].*
3
[root@centos7 data]# ls “f
?[0-9].*
4
[root@centos7 data]# ls f
?[0-9].*
5
[root@centos7 data]# touch a[0-9].txt
6
[root@centos7 data]# touch a{0..9}.txt
7 [root@centos7 data]# ll a[0-9].txt
(8) [a-z] :字母
练习(输出结果过长,此处不予展示,可观看视频自行练习):
1
[root@centos7 data]# touch b{a..z}.txt
2
[root@centos7 data]# ls b[a-z].txt
3 [root@centos7 data]# ls b[a-c].txt
(9) [A-Z] :字母
练习(输出结果过长,此处不予展示,可观看视频自行练习):
1
[root@centos7 data]# touch b{A..Z}.txt
2
[root@centos7 data]# ls b[A-C].txt
3 [root@centos7 data]# ls b[ACz].txt
(10) [wang] 匹配列表中的任何的一个字符
(11) [^wang] 匹配列表中的所有字符以外的字符
1
[root@centos7 data]# ls b[^ACz].txt
(^ 代表除了的意思)
2 [root@centos7 data]# ls b[^ a-z].txt
三、预定义的字符类: man 7 glob
(1) [:digit:]: 任意数字,相当于0-9
练习:
1
[root@centos7 data]# ls a[0-9]* a9.txt
2
a0.txta1.txt a2.txta3.txta4.txt a5.txt a6.txt a7.txt a8.txt
3
[root@centos7 data]# ls a[[:digit:]]*
4 a0.txt a1.txt a2.txt a3.txt a4.txt a5.4xt a6.txt a7.txt a8.txt a9.txt
(2) [:lower:] 任意小写字母
练习:
1
[root@centos7 data]# ls b [ [:lower:] ].txt
2 by.txt ba.txtbc.txt be.txt bg.txtb1.txt bk.txt bm.txt bo.txt bq.txt bs.txt bu.txt bw.txt bz.txt bb.txtbd.txtbf.txtbh.txt bj.txt bl.txt bn.txt bp.txt br.txt bt.txt bv.txt bx.txt
(3) [:upper:]: 任意大写字母
练习:
1
[root@centos7 data]# ls b [ [:upper:] ].txt
2 bA.txt bc.txt bE.txt bG.txtbI.txt bk.txt bM.txt bo.txt bP.txt bq.txt bR.txt bs.txt bu.txt bv.txt bw.txt bx.txt bz.txt bY.txt bB.txtbD.txtbF.txt bH.txt bJ.txt bL.txt bN.txt bT.txt
(4) [:alpha:]: 任意大小写字母
(5) [:alnum:]: 任意数字或字母
(6) [:blank:]: 水平空白字符
(7) [:space:]: 水平或垂直空白字符
(8) [:punct:]: 标点符号
(9) [:print:]: 可打印字符
(10) [:cntrl:]: 控制(非打印)字符
(11) [:graph:] :图形字符
(12) [:xdigit:]: 十六进制字符
四、练习
1、显示 /var 目录下所有以 l 开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
[root@centos7 ~]# ls/var/1*[ 0-9 ]* [ [:lower:] ] -d
[root@centos7 ~]# ls/var/1*[ [:digital:] ]*[ [:lower:] ] -d
2、显示 /etc 目录下以任意一位数字开头,且以非数字结尾的文件或目录
[root@lsxq~]# ls/etc/[0-9]*[^0-9] -d
3、显示 /etc/ 目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
[root@centos7 ~]# -d/etc/[^ [:alpha:] ] [ [:alpha:] ]*
4、显示 /etc/ 目录下所有以 rc 开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
[root@centos7 ~]# ls/etc/rc[0-6]* -d
5、显示 /etc 目录下,所有以 .d 结尾的文件或目录
[root@centos7 ~]# ls /etc/*.d -d
6、显示 /etc 目录下,所有 .conf 结尾,且以 m,n,r,p 开头的文件或目录
[root@centos7 ~]# ls -d /etc/[mnrp]*.conf
7、只显示 /root 下的隐藏文件和目录
[root@centos7 ~]# ls -d/root/.*
[root@centos7 root]# ls -aI "[^.]*"
[root@centos7 root]# l. ls -d.*--color=auto
8、只显示 /etc 下的非隐藏目录
[root@centos7 ~]# ls -d /etc/*/
五、创建空文件和刷新时间
l touch 命令
l 格式: touch [OPTION]... FILE...
(1) -a 仅改变 atime 和 ctime
(2) -m 仅改变 mtime 和 ctime
练习:
1
[root@centos7 ]# ll --time=atime anaconda-ks.cfg
2
rw---- 1 wang root 1895Sep 2418:17 anaconda-ks.cfg
3
[root@centos7 ~]# ll--time=ctime anaconda-ks.cfg
4
-rw-------.1 wang root 1895 Sep 22 01:58anaconda-ks.cfg
5
[root@centos7 ~]# ll anaconda-ks.cfg
6
-rw-------. 1 wang root 1895 Sep 22 01:55 anaconda-ks.cfg
7
[root@centos7 ~]# touch anaconda-ks.cfg
8
[root@centos7 ~]# ll anaconda-ks.cfg
9
-rw-------. 1 wang root 1895 Sep 2418:18 anaconda-ks.cfg
10
[root@centos7 ~]# ll --time=ctime anaconda-ks.cfg
11
-rW------- 1 wang root 1895 Sep 24 18:18 anaconda-ks.cfg
12
[root@centos7 ~]# ll --time=atime anaconda-ks.cfg
13 -rw------ 1 wang root 1895 Sep 24 18:18 anaconda-ks.cfg
(3)-t [ [CC] YY] MMDDhhmm [.ss] 指定 atime 和 mtime 的时间戳
练习:
1
[root@centos7 ~]# cd /data
2
[root@centos7 data]# touch ‘date +%F’.log
3
[root@centos7 data]# ls
4
2018-09-24.1og
5
[root@centos7 data]#ll
6
tota10
7
rw-r--r--1 root root 0 Sep 24 18:212018-09-24.log
8
[root@centos7 data]# stat 2018-09-24.log
9
File:'2018-09-24.1og
10
Size: 0 Blocks: 0 IO Block:4096 regular empty file
11
Device: 803h/2051d Inode:67 Links:1
12
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
13
Access: 2018-09-24 18:21:23.318840561 +0800
14
Modify: 2018-09-24 18:21:23.318840561 +0800
15
Change: 2018-09-2418:21:23.318840561 +0800
16
Birth: -
17
[root@centos7 data]# touch -t 201910200830.20 2018-09-24.log
18
[root@centos7 data]# stat 2018-09-24.log
19
File:'2018-09-24.1og
20
Size: 0 Blocks: 0 IO Block:4096 regular empty file
21
Device: 803h/2051d Inode:67 Links:1
22
Access: (0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
23
Access: 2019-10-2008:30:20.000000000+0800
24
Modify: 2019-10-2008:30:20.000000000+0800
25
change: 2018-09-24 18:23:06.969838405 +0800
26
Birth:-
(4) -c 如果文件不存在,则不予创建
练习:
1
[root@centos7 data]# touch -c f1
2
[root@centos7 data]# ls
3
2018-09-24.1og
4
[root@centos7 data]# touch -c 2018-09-24.log
5
[root@centos7 data]# stat 2018-09-24.log
6
File:'2018-09-24.log’
7
Size:0. Blocks:0 IO Block:4096 regular empty file
8
Device: 803h/2051d Inode:67 Links:1
9
Access:(0644/-rw-r--r--) Uid (0 / root) Gid:( 0/root)
10
Access: 2018-09-24 18:23:52184837464 +08000
11
Modify: 2018-09-24 18:23:52184837464+0800
12
Change: 2018-09-24 18:23:52.184837464 +0800
13 Birth: -