如何使用节点glob获取第一个X文件

时间:2014-03-16 16:41:15

标签: node.js glob minimatch

使用node-glob,是否可以指定仅返回前X个匹配文件的模式,而不是所有匹配?

例如,如果我想要所有JavaScript文件,我的模式将是**/*.js。但是,如果我只想要前5个JavaScript文件呢?

我意识到还有其他选项,例如我可以获取生成的文件集数组并对其进行切片。这里的基础案例很难,所以我试图直接从glob模式中完成这个。

1 个答案:

答案 0 :(得分:5)

您可以像这样创建自己的Glob对象:

var i = 0;
var Glob = require("glob").Glob;
var mg = new Glob(pattern, options, cb);
mg.on("match", function(matched) {
    console.log(matched);
    i++;
    if(i == 5) mg.abort();
});

它是一个事件发射器,因此您可以侦听在找到文件时将触发的match事件。每次匹配都会增加计数器,如果已达到阈值,您可以致电mg.abort()停止搜索。