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

Node js child process delete multiple files

本文关键字:文件 删除 js 子进程 节点      更新时间:2023-09-26

我正在尝试设置一个节点.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));
  }