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