在 CentOS 的命令行中使用命令的時(shí)候男旗,如果不使用正則相關(guān)的命令球散,我們是否可以使用類(lèi)似正則的匹配呢巨缘,比如在使用 ls添忘、find、rm 等命令時(shí)若锁?
glob 匹配正是您所需要的搁骑。此匹配規(guī)則在 CentOS 手冊(cè)頁(yè)的 glob 條目的第七類(lèi)中可以找到。 命令 man 7 glob
可查詢(xún)此信息又固。
glob 匹配類(lèi)型
glob 具有四種匹配類(lèi)型仲器,分別為通配符(wildcard)、字符類(lèi)(Character classes)仰冠、范圍(Ranges)和反(Complementation)匹配乏冀。
通配符匹配(wildcard)
單個(gè)字符串就是一個(gè)通配符匹配,但在此字符串中如有 ?洋只、* 或 [ 符號(hào)時(shí)辆沦,將會(huì)啟用匹配擴(kuò)展。
* 匹配 0 至 n 個(gè)任意字符木张。
? 匹配任意單個(gè)字符众辨。
字符類(lèi)匹配(Character classes)
[]
匹配括號(hào)內(nèi)用逗號(hào)分隔的字符集合中的任意單個(gè)字符。
[][!]
將匹配 ]舷礼、[鹃彻、! 三個(gè)字符中的任意一個(gè)字符。
范圍匹配(Ranges)
[start_char-end_char]
方括號(hào)加連字符方式妻献,可以匹配多個(gè)連續(xù)字母字符或遞增數(shù)字字符集合中的任意單個(gè)字符蛛株。
[A-Fa-f0-9]
等同 [ABCDEFabcdef0123456789]
反匹配(Complementation)
[!character_set]
方括號(hào)中使用感嘆號(hào)团赁,可以匹配所有字符集合中的,但不包括在感嘆號(hào)后字符集合的任意單個(gè)字符谨履。
[!]a-]
將匹配除了 ]欢摄、a、笋粟、- 字符的所有字符集合中的任意單個(gè)字符怀挠。
注意事項(xiàng)
在 shell 命令行中,轉(zhuǎn)譯字符 \
可以取消 ?
害捕、*
和 [
的特殊功能绿淋,但在方括號(hào)中的字符表示愿意,如 [[?*\]
匹配其中四個(gè)字符尝盼。
在對(duì)路徑名匹配中吞滞, /
字符不能被 ?
、*
或像 "[.-0]" 范圍匹配所匹配盾沫。在范圍匹配中包含 /
裁赠,是語(yǔ)法錯(cuò)誤。
文件名以 .
為起始時(shí)赴精,無(wú)法被 *
匹配佩捞,必須顯式的匹配點(diǎn)號(hào)。
rm *
命令不會(huì)刪除所有文件祖娘。
tar c *
命令不會(huì)打包所有文件失尖,tar c .
就好多了啊奄。