节点/ JavaScript glob文件/路径匹配语法,通配符等

时间:2014-06-14 16:44:15

标签: javascript node.js glob

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

我一直在看:

  

有关glob模式语法的更多信息,请参阅node-glob和minimatch文档。

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

似乎我必须缺少一些重要的文档来源。

我想知道:

之间的区别
path
path/
path/*
path/*.*
path/**
path/**/
path/**/*
path/**/*.*

以及我可能忽略的任何其他重要变体。我猜这在进行node-glob样式匹配('public/**/*.*')和.gitignorenode_modules)时有所不同,因为在前者中,您需要明确包含所有内容,很多层,在gitignore中,这是通过忽略任何目录自动处理的。这是对的吗?

1 个答案:

答案 0 :(得分:15)

首先,我从未使用过node-globminimatch个库。但我可能仍然可以提供帮助。对于glob模式匹配,有一种已知的语法,但坦率地说,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, - 它的功能相同,但使用的是正则表达式更丰富,更难处理的语法。您可以在这里查看综合参考 - http://www.w3schools.com/js/js_regexp.asp。简而言之,path/.*代表路径下方的任何内容,但不清楚是否递归。你可能会测试它。