Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何删除位于多个目录中的所有名为_tests的文件夹?_Node.js_Bash - Fatal编程技术网

Node.js 如何删除位于多个目录中的所有名为_tests的文件夹?

Node.js 如何删除位于多个目录中的所有名为_tests的文件夹?,node.js,bash,Node.js,Bash,我为每个项目都有一个名为\u tests的文件夹。我想一次删除所有项目中的所有测试文件夹。我在bash中找到了解决方案 用于。*/initial/src/\u测试中的dir;做 rm-rf“$dir” 完成 使用find- find /home/user/single_directory/ -type d -name "__tests" | xargs rm -rf 下面是一个node.js实现,用于删除文件夹\uu tests。您将要扫描的根目录作为目录变量提供给它,它将

我为每个项目都有一个名为\u tests的文件夹。我想一次删除所有项目中的所有测试文件夹。

我在bash中找到了解决方案

用于。*/initial/src/\u测试中的dir;做
rm-rf“$dir”
完成

使用
find
-

find /home/user/single_directory/ -type d -name "__tests" | xargs rm -rf

下面是一个node.js实现,用于删除文件夹
\uu tests
。您将要扫描的根目录作为
目录
变量提供给它,它将开始扫描其中的所有内容

如果要包含多个目录,请将它们添加到
目录中

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

// base directory you want to scan for the directory to be deleted
const DIRECTORY = "./test"; // single directory
const DIRECTORIES = ['dir-1', 'dir-2', 'dir-3']; // multiple directories

const removeMultipleDirs = function(dirs) {
    dirs.forEach(dir => {
        removeDir(dir);
    })
}

const removeDir = (baseDir) => {
    const absolutePath = getAbsolutePath(baseDir);

    try {
        // returns a string of files and directory in absolute path
        const files = fs.readdirSync(absolutePath);

        files.forEach(file => {
            let path = absolutePath + '/' + file;

            // if it's not a directory, it will be ignored
            if (fs.lstatSync(path).isDirectory()) {
                if (file == '__tests') {
                    try {
                        fs.rmSync(path, { recursive: true });
                        console.log(`${path} deleted!`);
                    } catch (error) {
                        console.log(`Unable to delete ${path}`);
                    }
                } else {
                    removeDir(path);
                }
            }
        })

    } catch (error) {
        console.log(`${baseDir} is not a directory`);
    }
}

// converts relative path to absolute path.
// if the path is absolute it will return itself
const getAbsolutePath = (baseDir) => path.isAbsolute(baseDir) ? baseDir : path.resolve(baseDir);

removeDir(DIRECTORY); // for a single project
removeMultipleDirs(DIRECTORIES); // for multiple projects

你想用nodejs还是用bash来做这件事?一切都很好。请看一下
find
命令。@upender查找任何地方都会花费很多时间,你有一个包含所有项目的特定目录吗?是的,我有一个目录中的所有项目OK,谢谢。我没有告诉你,在每个项目的单一目录中有两个
\u测试文件夹,一个是初始文件夹,另一个是最终文件夹。一些(大多数?)版本的
find
有一个
-delete
选项。