Node.js 如何删除位于多个目录中的所有名为_tests的文件夹?
我为每个项目都有一个名为\u tests的文件夹。我想一次删除所有项目中的所有测试文件夹。我在bash中找到了解决方案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。您将要扫描的根目录作为目录变量提供给它,它将
用于。*/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
选项。