文件通配符 | 学习笔记

简介: 快速学习文件通配符。

开发者学堂课程【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:存放设备,sdasr0zeronullrandom

/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: -

相关文章
|
3月前
|
JavaScript 前端开发
大小写敏感性解析
【8月更文挑战第29天】
36 4
|
5月前
|
人工智能 Shell Linux
探索ls命令中的通配符匹配
探索ls命令中的通配符匹配
|
5月前
|
编译器 C++
C++的前缀++与后缀++是什么
C++的前缀++与后缀++是什么
正则中的[^]与通配符里面的[!]的区别
正则中的[^]与通配符里面的[!]的区别
通配符?,*,**区别
通配符?,*,**区别
153 0
通配符注意事项
通配符注意事项
82 0
|
Java Linux Shell
Linux命令之通配符&管道符
Linux命令之通配符&管道符
html+css实战50-通配符
html+css实战50-通配符
240 0
html+css实战50-通配符
项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加
项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加
项目实战:Qt文件改名工具 v1.2.0(支持递归检索,搜索:模糊匹配,前缀匹配,后缀匹配;重命名:模糊替换,前缀追加,后缀追加