gpt4 book ai didi

directory -/** 和/* 在 Grunt 中的目录导航方面有何不同?

转载 作者:行者123 更新时间:2023-12-04 23:48:58 25 4
gpt4 key购买 nike

这对你们来说很容易,但我找不到这个问题的明确/正式答案。

假设我们在目录 A 中。然后,

“A/*”可能意味着:直接在A中的每个文件和文件夹。

“A/**”则可能意味着:A 中的每个文件和文件夹,以及直接位于 A 中的每个子级中的每个文件和文件夹。(基本上,是/* 运算符的扩展,它遍历根文件夹更深一层? 又名 "/** "= "/*/* ")

我的“直接内部”术语可能是错误的。说“直系 child ”之类的可能会更好,但你明白了。

那么,“A/**/*”是什么意思呢?它是否等于“A/*/*/*”?

虽然这看起来很基本,但当我没有对运算符的正式定义时,它会很困惑。

我目前正在使用 Javascript 并尝试修改 Gruntfile。但我想这些运算符可能会出现在任何上下文中。

最佳答案

这种行为不是 JavaScript 固有的,也与任何运算符无关:就 JavaScript 而言,它只是一个字符串。
这种 glob 扩展的处理由特定的库/消费者决定。对于 gruntjs,它包含在 Grunt Globbing Patterns 中:

It is often impractical to specify all source filepaths individually, so Grunt supports filename expansion (also know as globbing) via the built-in node-glob and minimatch libraries ..

  • * matches any number of characters, but not /

  • ** matches any number of characters, including /, as long as it's the only thing in a path part

All most people need to know is that foo/*.js will match all files ending with .js in the foo/ subdirectory, but foo/**/*.js will match all files ending with .js in the foo/ subdirectory and all of its subdirectories.


因此(但请参阅特定文档!), /**/通常意味着“匹配任何深度的目录”和 /*//*表示“匹配单个目录或文件部分”。

gruntjs 文档对 ** 的具体机制有点模糊。在标准 "/**/*.x"模式,但指的是 node-glob说:

If a "globstar" (**) is alone in a path portion, then it matches zero or more directories and subdirectories searching for matches. It does not crawl symlinked directories.

[.. The double-star character] is supported in the manner of bsdglob and bash 4.3, where ** only has special significance if it is the only thing in a path part. That is, a/**/b will match a/x/y/b, but a/**b will not.


使用这些知识,我们得到了 A/**/f 的等效性(当用作路径组件时)。与 A/f , A/*/f , A/*/*/f ,等等,用于每个中间目录。

关于directory -/** 和/* 在 Grunt 中的目录导航方面有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com