node-glob中对glob的规则有如下描述:*在单个路径部分匹配0个或多个字符?匹配一个字符[...]匹配一个字符范围,类似于RegExp范围。如果范围的第一个字符是!或^然后它匹配不在范围内的任何字符。!(pattern|pattern|pattern)匹配任何不匹配提供的任何模式的任何内容。?(pattern|pattern|pattern)匹配零个或一个提供的模式。+(pattern|pattern|pattern)匹配一个或多个提供的模式。*(a|b|c)匹配零个或多个提供的模式@(pattern|pat*|pat?erN)恰好匹配其中一个提供的模式**如果“globstar”单独出现在路径部分,则它匹配零个或多个目录和子目录搜索匹配项。它不会抓取符号链接目录。名称符号链接目录软件链接目录。例如,window下创建的快捷方法asinglepathportion某级目录名或某个文件名例如:/a/b/c.txt['a','b','c.txt']apathportionN级目录或N级目录+一个文件例如:/a/b/c.txt['a','a/b','a/b/c.txt','b','b/c.txt','c.txt']明白了。如果一个文件或目录路径部分有一个.作为第一个字符,那么它将不匹配任何glob模式,除非该模式的相应路径部分也有一个.作为它的第一个字符。例如,模式a/.*/c将匹配位于a/.b/c的文件。但是模式a/*/c不会,因为*不是以点字符开头。如果目录名或文件名以.,仅当模式的相应部分以.可以匹配当然你也可以在使用node-globconstglob=require('glob')glob('*',{dot:true})时理解为*匹配0个或多个/以外的字符,并遵守与上述规则一起使用.理解**如果globstar是路径部分,那么会匹配N级目录或者N级目录+一个文件其他情况原文不做说明,只能自己手动测试,以下面的目录结构为例|--.git|--readme.md|--aa|--aa.md|--bb|--bb.md**除.git和文件夹路径外的所有文件**/*同上**.md只匹配readme.md的路径*.md同上aa**.md匹配空aa/**.md匹配aa.md路径**bb/**。mdmatchisempty**/bb**.mdmatchisempty**/bb/**.mdmatchbb.mdpath初步结论:一个路径部分,即**必须和其他pattern内容用/隔开,或者没有其他模式内容,只有**如果不是路径部分,则视为*
