在 Shell 中, * 是一个通配符,称为“星号”。它的含义是:匹配任意长度的任意字符串,这个字符串可以包含零个或多个字符。
简单来说,它就是一个超级万能的“替身”,可以代表任何名字。
* 的常见用法
● *.txt :匹配当前目录下所有以 .txt 结尾的文件,如 a.txt 、 readme.txt 。
● data* :匹配所有以 data 开头的文件,如 data.log 、 data_backup 。
● log :匹配文件名中包含 log 的所有文件,如 syslog 、 error.log 。
● * :单独一个星号,会匹配当前目录下除隐藏文件外的所有文件。

关于 [^b]
Shell 支持 [^b] 这种写法。
它属于另一种通配符 [] 的高级用法,具体含义如下:
● [] :匹配其中任意一个字符。例如 [abc] 匹配 a、b 或 c。
● [^] 或 [!] :匹配除了括号中字符外的任意一个字符。这两种写法在大多数 Shell(如 bash, zsh)中是等效的。
举例说明:
● 命令 ls [^b]* 的意思是:
列出当前目录下,所有不以字母 b 开头的文件和文件夹。
注意: * 和 [^b] 是两个独立的通配符,可以组合使用。 ls [^b]* 这个命令中, [^b] 限制了文件名的第一个字符(不能是b),而 * 则代表了文件名后面可以跟任意的、任意长度的字符。