Utiliser child_process.exec pour executer find
Bonjour, je travaille sous node.js, et ai besoin de nettoyer un dossier de certains fichiers, mais d'en garder d autres.
Sous bash, je sais faire, et j'arrive à générer la commande sous node.js.
La commande générée copié/collé depuis mes logs fonctionne, mais exec me renvoie
Code:
/bin/sh: 1: Syntax error: "(" unexpected
La commande ressemble à
Code:
find path/to/folder/ \( -name *.txt -o -name *.zip \) ! \( -name test.txt -o -name test2.txt \) -ls -delete
(Bien que les \( soient transformé en ( lors de l affichage via console.log).
Voici le code générant et executant la commande.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| function purge(psmil, callback) {
console.log('purge');
var arg = ['find', DOWNLOAD_DIR, '\(', '-name', '*.txt', '-o', '-name', '*.zip', '\)', '!', '\('],
file = [],
i = 0;
//Creating the command
arg.push('-name');
arg.push(file[i]);
i = i + 1;
while (i < file.length) {
arg.push('-o');
arg.push('-name');
arg.push(file[i]);
i = i + 1;
}
arg.push('\)');
arg.push('-ls');
arg.push('-delete');
//Start the command
console.log('Purging...');
console.log(arg.join(' '));
exec(arg.join(' '), function(err, stdout, stderr){
console.log('Will delete:');
console.log(stdout);
console.log(stderr);
callback(psmil);
});
} |
Qui m affiche:
Code:
1 2 3 4 5 6
| purge
Purging...
find /path/to/folder/ ( -name *.txt -o -name *.zip ) ! ( -name test.txt -o -name test2.txt ) -ls -delete
Will delete:
/bin/sh: 1: Syntax error: "(" unexpected |