我正在尝试设置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 (当我在终端中输入时可以使用)
......但是,我一定是做错了。
答案 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));
}