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

时间:2015-06-17 22:10:08

标签: javascript node.js child-process

我正在尝试设置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 (当我在终端中输入时可以使用)

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

1 个答案:

答案 0 :(得分:3)

这是因为它将您的字符串作为单个参数传递给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));
  }