javascript - Node/JavaScript glob 文件/路径匹配语法、通配符等

标签 javascript node.js glob

我刚刚找到 http://gruntjs.com/configuring-tasks#globbing-patterns ,这是我找到的最有用的引用资料。

我一直在看:

For more on glob pattern syntax, see the node-glob and minimatch documentation.

然而,我似乎找不到详尽的语法/用法列表。 These tests可能是最好的引用,但仍然不是特别容易破译。

看来我一定是遗漏了一些重要的文档来源。

我想知道两者之间的区别:

path
path/
path/*
path/*.*
path/**
path/**/
path/**/*
path/**/*.*

以及我可能省略的任何其他相关的重要变体。我猜这在进行 node-glob 样式匹配 ('public/**/*.*') 和 .gitignore (node_modules),因为在前者中,你需要显式地包含所有内容,很多层很深,而在 gitignore 中,这是通过忽略任何目录来自动处理的。这是正确的吗?

最佳答案

首先,我从未使用过 node-globminimatch 库。但也许我仍然可以提供帮助。 glob 模式匹配有一种 known 语法,但坦率地说,在 Google 中进行快速搜索并没有显示任何简短而清晰的结果。大概是这个 - http://hgbook.red-bean.com/read/file-names-and-pattern-matching.html#id381184 - 是我找到的最好的资源。维基百科中的文章详尽且不可读 - http://en.wikipedia.org/wiki/Glob_(programming) .

简而言之,恕我直言,node-glob:

  • * - 代表文件名的任意数量的字符,但不能代表 /
  • ** - 与 * 相同,但跨越文件夹边界
  • [abxy] - 可以替换列表中的任何一个字符; [0-9]可以代表任意数字

因此你的例子:

  • path/* - path 中的所有文件和文件夹都不是递归的
  • path/** - path 中的所有内容递归
  • path/*.* - 所有文件名和文件夹;匹配 a.txt.hiddennoextension.folder.out、...

来自 minimatch 文档 - https://github.com/isaacs/minimatch , - 它的作用相同,但使用了 Regular Expressions 的更丰富且稍微困难的语法。您可以在这里寻找全面的引用资料 - http://www.w3schools.com/js/js_regexp.asp .简而言之,path/.* 代表路径下方的任何内容,但不清楚是否递归。你可能会测试它。

关于javascript - Node/JavaScript glob 文件/路径匹配语法、通配符等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24222093/

相关文章:

python 搜索子目录

使用 glob 的 php echo 文件夹名称

python - 用填充的 0 来通配一个范围 - python

javascript - polymer 和D3 : How to send JSON from element attribute to template

javascript - 将当前 polymer 对象(this)传递给回调函数

javascript - 带有 "="字符的正则表达式

node.js - Nodejs写入文件

javascript - Nodejs发送基本网页

javascript - 从旧的indexedDB setVersion 升级到新的indexedDB.open 函数?

node.js - mongoDB + NodeJS : can't keep a stream cursor open