如何启用**(globstar)通配符?globstar的名称与激活方法
嘿,刚好我之前也碰到过这个问题!你说的这个能遍历所有子目录的**通配符,它的正式名称是globstar,是bash shell的扩展功能,专门用来解决跨层级子目录的匹配需求~
核心区别回顾
先再明确下它和普通*的差异:
- 单星号
*:仅匹配当前目录下的所有文件/文件夹,不会深入子目录 - 双星号
**(globstar):会递归匹配所有层级的子目录及其包含的文件/文件夹
激活方法
globstar默认是关闭的,所以需要手动开启,分两种场景:
临时激活(仅当前shell会话有效)
直接在终端里执行这条命令:
shopt -s globstar
执行完就能立刻用了,比如试试ls **/*.txt,就能列出当前目录及所有子目录里的TXT文件。如果要临时关闭这个功能,执行:
shopt -u globstar
永久激活(所有新shell会话都生效)
把开启命令加到bash的配置文件里,步骤如下:
- 打开你的bash配置文件(Linux系统一般用
~/.bashrc,macOS如果使用bash的话可能是~/.bash_profile):nano ~/.bashrc - 在文件末尾添加一行:
shopt -s globstar - 保存并退出nano编辑器(按
Ctrl+O,回车确认保存,再按Ctrl+X退出) - 让配置立刻生效:
source ~/.bashrc
注意事项
- 这个功能要求bash版本在4.0及以上,可以用
bash --version查看你的当前bash版本,如果版本过低需要先升级bash。 - 其他shell(比如zsh)默认就支持
**的递归匹配,但bash必须手动开启globstar扩展才能生效。
内容的提问来源于stack exchange,提问作者k0pernikus
相关产品推荐
相关产品推荐

