如何在node.js中拖尾多个文件?

时间:2012-07-17 02:50:21

标签: node.js tail

当使用以下代码来拖尾文件时,我们可以成功输出数据。

var spawn = require('child_process').spawn;
var filename = '/logs/error.log';
var tail = spawn("tail", ["-f", filename]);
tail.stdout.on("data", function (data) {
    console.log(data);
});

但是当我将文件名更改为“/logs/*.log”时,我找不到任何输出。谁能告诉我是什么原因?谢谢!

2 个答案:

答案 0 :(得分:2)

在控制台上输入tail -f /logs/*.log时,/logs/*.log的扩展由shell处理;当tail程序获得参数时,它们已经扩展到tail -f /logs/error.log /logs/other.log。您需要自己为Node进行扩展:

var fs = require('fs');
var spawn = require('child_process').spawn;
var filename = fs.readdirSync('/logs').map(function(file) { return '/logs/' + file });
var tail = spawn("tail", ["-f"].concat(filename));
tail.stdout.on("data", function (data) {
    console.log(data);
});

答案 1 :(得分:0)

因为tailspawn都不知道如何使用通配符将文件名扩展为匹配的文件名集。这通常由shell执行,因此在这种情况下,您需要自己在代码中执行此操作。