节点js子进程删除多个文件

Node js child process delete multiple files

我正在尝试设置一个 node.js 子进程以通过终端删除多个文件。这在删除一个文件时有效 - 但在我提供一组文件时失败。

const spawnSync = require('child_process').spawnSync;

var toDelete = array.join(' ');

  if (toDelete.length) {    
    spawnSync('rm', ['-rf', toDelete ]);
  }

我认为最终会作为 rm -rf data/foo.txt data/bar.txt 发送(当我将其输入终端)

...但是,我一定是做错了。

这是因为它将您的字符串作为单个参数传递给 rm -rf,就像您输入的一样:

# rm -rf "data/foo.txt data/bar.txt" 

由于在 Unix 中空格是文件名的有效字符,它会尝试删除名为 "data/foo.txt data/bar.txt"

的单个文件

所以,你应该直接传递你的数组:

  if (toDelete.length) {    
    spawnSync('rm', ['-rf'].concat(toDelete));
  }