高階Linux運維工程師養成記-檔案萬用字元
高階Linux運維工程師養成記-檔案萬用字元
高階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]# ll total 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.txt
file1.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/a9j
2.顯示/data目錄下以任意一位數字開頭,且以非數字結尾的檔案或目錄
[root@centos8 data]# ll /data/[[:digit:]]*[^[:digit:]]
-rw-r--r-- 1 root root 0 Aug 5 06:45 /data/1mxx
3.顯示/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/1mxx
4.顯示/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