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 . 就好多了。

你可能感兴趣的:(CentOS 命令行 glob 匹配的介绍和使用)