Shell萬用字元用法分析

2020-07-16 10:04:35
在 Bash 中,如果需要模糊匹配檔名或目錄名,就要用到萬用字元。通過表 1 介紹一下常用的萬用字元。

表 1 萬用字元
萬用字元 作 用
? 匹配一個任意字元
* 匹配 0 個或任意多個任意字元,也就是可以匹配任何內容
[] 匹配中括號中任意一個字元。例如,[abc] 代表一定匹配一個字元,或者是 a,或者是 b,或 者是 c
[-] 匹配中括號中任意一個字元,- 代表一個範圍。例如,[a-z] 代表匹配一個小寫字母
[^] 邏輯非,表示匹配不是中括號內的一個字元。例如,[^0-9] 代表匹配一個不是數位的字元

舉幾個例子:

[[email protected] ~]# cd /tmp/
[[email protected] tmp]# rm -rf *
#進入臨時目錄,刪除所有檔案
#這個也是萬用字元,代表當前目錄中的所有檔案
[[email protected] tmp]# touch abc
[[email protected] tmp]# touch abcd
[[email protected] tmp]# touch 012
[[email protected] tmp]# touch 0abc
#建立幾個測試檔案
[[email protected] tmp]# ls *
012 0abc abc abed
#"*"代表所有的檔案
[[email protected] tmp]# ls ?abc
0abc
#"?"匹配任意一個字元,所以會匹配 0abc,但是不能匹配 abc,因為"?"不能匹配空
[[email protected] tmp]# ls [0-9]* 012 0abc
#匹配任何以數位開頭的檔案
[[email protected] tmp]# ls [^0-9]* abc abcd
#匹配不以數位開頭的檔案