如何在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); });
因为tail
和spawn
都不知道如何用通配符扩展文件名到匹配的文件名集中。 这通常是由shell执行的,所以在这种情况下,你需要在代码中自己做。