我知道有一个类似于 的运算符*
,不同之处在于它适用于所有子目录。
假设您有一个文件夹结构:
.
├── bar
│ ├── foo
│ │ └── baz
│ │ └── hurz
│ │ └── lolz
│ │ └── hello.txt
│ └── poit.txt
└── fnord.txt
然后ls
用单星*
列出:
$ ls *.txt
fnord.txt
我希望双星运算符**
可以处理子文件夹,但它并不完整。我知道这可以工作,因为我在另一台机器上启用了它,但我忘记了如何。
$ ls **/*.txt
bar/poit.txt
我期待输出看起来像:
ls **/*.txt
bar/foo/baz/hurz/lolz/hello.txt bar/poit.txt fnord.txt
如何**
调用操作员以及如何正确激活它?
您正在寻找 bash 版本 4 中引入的 globstar shell 选项。
如果您不确定您正在运行什么版本,您可以通过以下方式进行测试:
检查它是否通过以下方式启用:
它默认为
off
. 如果你想使用它,你必须启用它:然后它将按预期工作。您可能希望将其添加到您
.bashrc
的,以便始终在新 shell 中启用它。要禁用它:
详情请参阅
help shopt
。