如何启用双星**(globstar)运算符?

如何启用双星**(globstar)运算符?

我知道有一个类似于的操作符*,不同之处在于它可以作用于所有子目录。

假设您有一个文件夹结构:

.
├── 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

如何**调用操作员以及如何正确激活它?

答案1

您正在寻找 bash 版本 4 中引入的 globstar shell 选项。

如果你不确定正在运行哪个版本,可以通过以下方式测试:

$ echo $BASH_VERSION
4.4.12(1)-release

通过以下方式检查是否已启用:

$ shopt globstar

默认为off。如果你想使用它,你必须启用它:

$ shopt -s globstar

然后它就会按预期工作。您可能希望将其添加到您的,.bashrc以便它在新的 shell 中始终启用。

要禁用它:

$ shopt -u globstar

help shopt参阅详情。

相关内容