假设我有这些文件:
foo/bar/baz/test.js
foo/bar/baz/test.min.js
如果我运行:
shopt -s globstar
shopt -s extglob
echo foo/bar/**/*!(.min).js
...但它仍然与test.min.js
文件匹配。
我该如何忽略它?
假设我有这些文件:
foo/bar/baz/test.js
foo/bar/baz/test.min.js
如果我运行:
shopt -s globstar
shopt -s extglob
echo foo/bar/**/*!(.min).js
...但它仍然与test.min.js
文件匹配。
我该如何忽略它?
在 extglob 中,
!(.min)
可以匹配除 之外的所有内容.min
(以及包含 的任何内容/
);包括空字符串!当你
foo/bar/baz/test.min.js
使用 glob进行测试时,foo/bar/**/*!(.min).js
你会得到成功,因为:foo/bar/
火柴foo/bar/
**/
火柴bar/
*
火柴test.min
!(.min)
匹配空字符串.js
火柴.js
您想要的含义
!(.min)
实际上是“任何不以 结尾的东西.min
”,这是 的否定*.min
,因此使用!(*.min)
来解决问题: