1. 程式人生 > 實用技巧 >CentOS 命令列 glob 匹配的介紹和使用

CentOS 命令列 glob 匹配的介紹和使用


在 CentOS 的命令列中使用命令的時候,如果不使用正則相關的命令,我們是否可以使用類似正則的匹配呢,比如在使用 ls、find、rm 等命令時?

glob 匹配正是您所需要的。此匹配規則在 CentOS 手冊頁的 glob 條目的第七類中可以找到。 命令 man 7 glob 可查詢此資訊。

glob 匹配型別

glob 具有四種匹配型別,分別為萬用字元(wildcard)、字元類(Character classes)、範圍(Ranges)和反(Complementation)匹配。

萬用字元匹配(wildcard)

單個字串就是一個萬用字元匹配,但在此字串中如有 ?、* 或 [ 符號時,將會啟用匹配擴充套件。

* 匹配 0 至 n 個任意字元。
? 匹配任意單個字元。

字元類匹配(Character classes)

[] 匹配括號內用逗號分隔的字元集合中的任意單個字元。

[][!] 將匹配 ]、[、! 三個字元中的任意一個字元。

範圍匹配(Ranges)

[start_char-end_char] 方括號加連字元方式,可以匹配多個連續字母字元或遞增數字字元集合中的任意單個字元。

[A-Fa-f0-9] 等同 [ABCDEFabcdef0123456789]

反匹配(Complementation)

[!character_set] 方括號中使用感嘆號,可以匹配所有字元集合中的,但不包括在感嘆號後字元集合的任意單個字元。

[!]a-] 將匹配除了 ]、a、、- 字元的所有字元集合中的任意單個字元。

注意事項

在 shell 命令列中,轉譯字元 \ 可以取消 ?*[ 的特殊功能,但在方括號中的字元表示願意,如 [[?*\] 匹配其中四個字元。

在對路徑名匹配中, / 字元不能被 ?*或像 "[.-0]" 範圍匹配所匹配。在範圍匹配中包含 / ,是語法錯誤。

檔名以 . 為起始時,無法被 * 匹配,必須顯式的匹配點號。

rm * 命令不會刪除所有檔案。
tar c * 命令不會打包所有檔案,tar c . 就好多了。