bash - Node.js 生成和 `*` 用于选择多个文件

标签 bash node.js

如果我创建一个 test 目录并将 foo.js 放入其中,那么我就可以运行

node test/*

运行目录中的所有文件就好了。但是如果在父目录中创建一个js文件并让它执行

spawn('node', ['test/*']);

然后它给我 stderr 输出

Error: Cannot find module '/mypath/test/*'

我开始意识到这是因为 * 是 shell 提供的便利(对吗?)。所以,我的问题是:

  1. 有什么方法可以在不使用 fs 读取 test 目录内容的情况下完成我想要的 spawn 操作?
  2. shell 到底如何翻译 test/*,以及是否可以从我的应用程序中利用这种强大的功能?

最佳答案

* 功能(以及 ?、{} 等)由 Glob 提供.

幸运的是,有人为 glob 进行了 Node.JS 绑定(bind) - node-glob .

使用npm install glob安装它,然后像这样使用它(未经测试):

var glob = require('glob');
glob('test/*', null, function (err, matches) {
    matches.forEach(function (match) {
        spawn('node', match);
    });
})

关于bash - Node.js 生成和 `*` 用于选择多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509009/

相关文章:

bash - SSH作为另一个用户,运行命令并退出

linux - 错误 : invalid PID number "" in "/run/nginx.pid"

node.js - 使用 mod_cluster willdfly 将 url apache 重写为 nodeJS 时出现问题

node.js - 在 Node.js 中,setImmediate() 回调是在当前事件循环标记上执行,还是在下一个事件循环标记上执行?

node.js - res.redirect 不是 Promise 中的函数

linux - 设置 HLS 分段时间

bash - 如何在大量远程服务器上运行快速脚本?

linux - 银色搜索器 : how to unignore files in the . gitignore?

javascript - NodeJS,Express,如何更新客户端以显示上传的文件

Node.js 使用 Redis 存储保存 session