【问题标题】:Confusion about globbing patterns关于 globbing 模式的困惑
【发布时间】:2013-12-08 15:46:43
【问题描述】:

在 GruntJS 网站上,它有一个 section on globbing patterns,但有些东西我有点困惑。

foo/**/*.js 将匹配foo/ 中所有以.js 结尾的文件 子目录及其所有子目录。

我看到双星号匹配包括/ 在内的所有路径,但如果文件位于foo 路径中,是否意味着它正在尝试匹配名为foo//*.js 的路径?

在我发现之前,我正在尝试类似foo/{,**}*.js 的方法,但它从来没有真正达到我想要的效果,我有点困惑为什么它不起作用。

【问题讨论】:

    标签: path gruntjs glob


    【解决方案1】:

    双星号表示模式应该执行递归匹配;即查看它找到的所有子目录。例如,模式将匹配:

    1. foo/bar.js
    2. foo/baz.js
    3. foo/bar/baz.js
    4. foo/bar/baz/qux.js
    

    它不会匹配foo.txt 文件。不过,foo/** 这样的模式会递归匹配所有内容txtjscss 等)。

    然而,foo/*.js 这样的模式只会匹配 1 和 2,因为它不是递归模式。

    【讨论】:

    • 我理解那部分。令我困惑的部分是双星号后面有一个斜线。斜线在这里不解释为文字吗?
    • 我不相信,不。您使用的模式实际上在幕后转换为正则表达式,因此“魔术”* 被替换为字符类。它与foo//qux.txt 不匹配,因为扩展名错误。
    • 糟糕,.txt 是一个错字,应该是 .js。现在已经更正了。
    猜你喜欢
    • 1970-01-01
    • 2017-10-26
    • 1970-01-01
    • 2019-05-17
    • 2020-03-06
    • 2016-03-16
    • 2013-07-27
    • 1970-01-01
    • 2012-09-20
    相关资源
    最近更新 更多