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

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

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”,我没有find任何输出。 谁能告诉我是什么原因? 谢谢!

在控制台上inputtail -f /logs/*.log时,/ /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); }); 

因为tailspawn都不知道如何用通配符扩展文件名到匹配的文件名集中。 这通常是由shell执行的,所以在这种情况下,你需要在代码中自己做。