什么是匹配所有不以下划线开头的文件的glob模式忽略那些以下划线开头的目录?

时间:2016-01-02 15:37:33

标签: node.js glob minimatch

给定目录结构:

a/
  b/
    _private/
      notes.txt
    c/
      _3.txt
      1.txt
      2.txt
    d/
      4.txt
    5.txt

如何编写选择以下路径的glob模式(与npm模块glob兼容)?

a/b/c/1.txt
a/b/c/2.txt
a/b/d/4.txt
a/b/5.txt

以下是我的尝试:

// Find matching file paths inside "a/b/"...
glob("a/b/[!_]**/[!_]*", (err, paths) => {
    console.log(paths);
});

但这只会发出:

a/b/c/1.txt
a/b/c/2.txt
a/b/d/4.txt

1 个答案:

答案 0 :(得分:2)

通过一些试验和错误(以及grunt (minimatch/glob) folder exclusion的帮助),我发现以下内容似乎达到了我所寻求的结果:

// Find matching file paths inside "a/b/"...
glob("a/b/**/*", {
    ignore: [
        "**/_*",        // Exclude files starting with '_'.
        "**/_*/**"  // Exclude entire directories starting with '_'.
    ]
}, (err, paths) => {
    console.log(paths);
});