Как удалить все файлы JSON в каталоге NodeJs - PullRequest
2 голосов
/ 25 октября 2019

Мне нужно удалить только файлы JSON в каталоге (несколько уровней). Я бы рискнул предположить, что это возможно с помощью fs-unlinkSync (path)

Но я не могу найти решение без указания отдельного имени файла.

Я надеялся решить его с помощьюследующее ... fs.unlinkSync ('./ desktop / directory / *. json'), но, к сожалению, звездочка не выберет все. Любое предложение, пожалуйста?

1 Ответ

4 голосов
/ 25 октября 2019

Вы можете перечислить файлы с помощью fs.readdirSync, а затем вызвать fs.unlinkSync для удаления. Это можно вызвать рекурсивно для обхода всего дерева.

const fs = require("fs");
const path = require("path");

function deleteRecursively(dir, pattern) {
    let files = fs.readdirSync(dir).map(file => path.join(dir, file));
    for(let file of files) {
        const stat = fs.statSync(file);
        if (stat.isDirectory()) {
            deleteRecursively(file, pattern);
        } else {
            if (pattern.test(file)) {
                console.log(`Deleting file: ${file}...`);
                // Uncomment the next line once you're happy with the files being logged!
                try { 
                    //fs.unlinkSync(file);
                } catch (err) {
                    console.error(`An error occurred deleting file ${file}: ${err.message}`);
                } 
            }
        }
    }
}

deleteRecursively('./some_dir', /\.json$/);

Я фактически оставил строку, удаляющую закомментированный файл. Я бы посоветовал вам запустить скрипт и радоваться файлам, которыевошли являются правильными. Затем просто раскомментируйте строку fs.unlinkSync, чтобы удалить файлы.

...