为什么extglob“ +(* /)A”不能像“ find -name A”一样工作?

时间:2019-01-26 18:28:16

标签: bash

在带有extglob的bash中,似乎+(* /)意味着“((任何字符序列后跟/)重复了正数次”)之外的其他东西

$ find -name A
./a/A
./b/c/A
./b/A
$ echo */A
a/A b/A
$ echo */*/A
b/c/A
$ echo +(*/)A
+(*/)A

我认为,由于到./b/c/A的路径与正则表达式'([[a-zA-Z1-9] /)+ [a-zA-Z1-9] '它将扩展为+(* /)A,但不是。这是怎么回事?

1 个答案:

答案 0 :(得分:0)

该模式匹配当前目录中的字符串。因此,+(*/)A会匹配与该模式匹配的当前目录中的文件或目录。

该模式无效。由于/对于文件名或目录名不是有效字符。因此+(*/)A绝不会匹配任何内容,因为/绝不会匹配文件名。

您可以使用双**来递归匹配目录。或使用find