开启辅助访问 切换到窄版

打印 上一主题 下一主题

高级Linux运维工程师养成记-文件通配符

[复制链接]
作者:源自桐柏 
版块:
嵌入式操作系统 linux 发布时间:2020-8-7 07:15:46
9850
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
高级Linux运维工程师养成记
在有些应用场景下,管理文件需要使用通配符来匹配文件名

  • *表示匹配0个或者多个字符(不包含隐藏文件)
  • ?表示任意的单个字符
  • ~ 当前用户的家目录
  • ~- 前一个工作目录
  • [0-9] 匹配数字范围
  • [a-z] 匹配字母
  • [A-Z] 匹配字母
  • [guanglei] 匹配列表中的任意一个字母
  • [^guanglei] 排除列表中的任意一个字母
查看以.txt结尾的文件
* 不包含隐藏文件
[root@centos8 data]# touch guanglei.txt[root@centos8 data]# touch TEST.txt[root@centos8 data]# touch .txt[root@centos8 data]# ll *.txt-rw-r--r-- 1 root root 0 Aug 5 05:53 guanglei.txt-rw-r--r-- 1 root root 0 Aug 5 05:53 TEST.txt查看以file开头的任意0个或者多个字符并且以.log结尾的文件
[root@centos8 data]# touch file{1..10}.log[root@centos8 data]# lltotal 4-rw-r--r-- 1 root root 0 Aug 1 19:21 file10.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file1.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file2.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file3.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file4.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file5.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file6.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file7.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file8.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file9.log-rw-r--r-- 1 root root 0 Aug 1 19:20 guanglei.txt-rw-r--r--. 1 guanglei root 1 Aug 1 18:20 TEST.txt[root@centos8 data]# ll file*.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file10.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file1.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file2.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file3.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file4.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file5.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file6.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file7.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file8.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file9.log

命令运行结果
显示file后面跟着任意一个字符的文件,文件名以.log结尾
排除了file10.log
[root@centos8 data]# ll file?.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file1.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file2.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file3.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file4.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file5.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file6.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file7.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file8.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file9.log

命令执行结果
查看指定字符数量的文件
[root@centos8 data]# touch TEST[root@centos8 data]# ll ????-rw-r--r-- 1 root root 0 Aug 5 05:59 TEST查看前一个工作目录的文件列表
前一个工作目录在/data目录下
[root@centos8 data]# cd [root@centos8 ~]# ls ~-file10.log file2.log file4.log file6.log file8.log guanglei.txt TEST.txtfile1.log file3.log file5.log file7.log file9.log TEST查看包含file和指定数字(1,2,3,4,5)的文件信息
[root@centos8 data]# ll file[1-5]*-rw-r--r-- 1 root root 0 Aug 1 19:21 file10.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file1.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file2.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file3.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file4.log-rw-r--r-- 1 root root 0 Aug 1 19:21 file5.log查看匹配列表中匹配任意一个字符的文件信息
即查看fileG.html,fileU.html,fileA.html,fileN.html,fileG.html,fileL.html,fileE.html,fileI.html的文件信息
[root@centos8 data]# touch /data/file{A..Z}.html[root@centos8 data]# ll /data/file[GUAGNLEI].html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileA.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileE.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileG.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileI.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileL.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileN.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileU.html

命令运行结果
查看匹配列表中不包含指定的任意一个字符的文件信息
即查看不是fileG.html,fileU.html,fileA.html,fileN.html,fileG.html,fileL.html,fileE.html,fileI.html的文件信息
[root@centos8 data]# ll /data/file[^GUANGLEI].html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileB.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileC.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileD.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileF.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileH.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileJ.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileK.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileM.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileO.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileP.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileQ.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileR.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileS.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileT.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileV.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileW.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileX.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileY.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileZ.html查看包含指定区间的文件名
a-c包含了a-c之间的大写字母,但是不显示大写的C
[root@centos8 data]# touch /data/file{a..z}.html[root@centos8 data]# ls /data/file[a-c].html/data/filea.html /data/fileA.html /data/fileb.html /data/fileB.html /data/filec.html文件通配符还有一些常用的预定义的字符类,可以使用命令 man 7glob 查看

  • [:digit:] 表示匹配任意数字,等价于0-9
  • [:lower:] 表示匹配任意小写字母,等价于a-z
  • [:upper:] 表示匹配任意大写字母,等价于A-Z
  • [:alpha:] 表示匹配任意大小写字母
  • [:alnum:] 表示匹配任意数字或字母
  • [:blank:]表示匹配水平空白字符
  • [:space:] 表示匹配水平或者空白字符
  • [:punct:] 表示匹配标点符号
  • [:print:] 表示匹配可打印字符
  • [:cntrl:] 表示匹配控制(非打印)字符
  • [:graph:]表示匹配图形字符
  • [:xdigit:] 表示匹配十六进制字符
显示以file开头的所有小写字母的文件名
[root@centos8 data]# ll /data/file[[:lower:]].html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filea.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/fileb.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filec.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filed.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filee.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filef.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/fileg.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/fileh.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filei.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filej.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filek.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filel.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filem.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filen.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/fileo.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filep.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/fileq.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filer.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/files.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filet.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/fileu.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filev.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filew.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filex.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filey.html-rw-r--r-- 1 root root 0 Aug 5 06:09 /data/filez.html显示以file开头的所有大写字母的文件名
[root@centos8 data]# ll /data/file[[:upper:]].html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileA.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileB.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileC.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileD.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileE.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileF.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileG.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileH.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileI.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileJ.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileK.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileL.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileM.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileN.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileO.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileP.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileQ.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileR.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileS.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileT.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileU.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileV.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileW.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileX.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileY.html-rw-r--r-- 1 root root 0 Aug 5 06:06 /data/fileZ.html系统中内置了别名l.,其含义是列出当前目录的隐藏文件
[root@centos8 data]# alias l.alias l.='ls -d .* --color=auto'加上目录就能查看指定目录的隐藏文件
[root@centos8 data]# ls -d /data/.*/data/. /data/.. /data/.txt列出指定目录的文件夹
[root@centos7 ~]# ls -d /*通配符的综合案例1.显示/dta目录下所有以a开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
[root@centos8 data]# touch a9j[root@centos8 data]# ll /data/a*[[:digit:]]*[[:lower:]]-rw-r--r-- 1 root root 0 Aug 5 06:49 /data/a9j2.显示/data目录下以任意一位数字开头,且以非数字结尾的文件或目录
[root@centos8 data]# ll /data/[[:digit:]]*[^[:digit:]]-rw-r--r-- 1 root root 0 Aug 5 06:45 /data/1mxx3.显示/data目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
[root@centos8 data]# touch 1mxx[root@centos8 data]# ll /data/[^[:alpha:]][[:alpha:]]*-rw-r--r-- 1 root root 0 Aug 5 06:45 /data/1mxx4.显示/data目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
[root@centos8 data]# mkdir rc01[root@centos8 data]# ll -d /data/rc[0-6]*drwxr-xr-x 2 root root 6 Aug 5 06:40 /data/rc01

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表