wwwwwllllk 发表于 2024-4-26 16:48:48

使用node批量删除目录,无论多少层级,封装了一下

```js
const fs = require('fs');
const path = require('path');

function deleteGitFolders(directory, depth, deleteDirName) {
if (depth === 0) {
    return;
}

fs.readdir(directory, (err, files) => {
    if (err) {
      console.error('Error reading directory:', err);
      return;
    }
    console.log(files)
    files.forEach(file => {
      const filePath = path.join(directory, file);
      if (fs.statSync(filePath).isDirectory()) {
      if (file === deleteDirName) {
          console.log('Deleting .git directory:', filePath);
          fs.rmdir(filePath, { recursive: true }, err => {
            if (err) {
            console.error('Error deleting .git directory:', err);
            } else {
            console.log('.git directory deleted successfully:', filePath);
            }
          });
      } else {
          deleteGitFolders(filePath, depth - 1); // 递归调用,深度减一
      }
      }
    });
});
}

const startDirectory = './';
deleteGitFolders(startDirectory, 2, '.git'); // 限制递归深度为2

```

如果你要使用只需要deleteGitFolders(startDirectory, 2, '.git'); 改成你指定的目录,你要递归的层级,你要删除的目录名


直接无限层级递归
```
const fs = require('fs');
const path = require('path');

function deleteGitFolders(directory) {
fs.readdir(directory, (err, files) => {
    if (err) {
      console.error('Error reading directory:', err);
      return;
    }

    files.forEach(file => {
      console.log(file)
      const filePath = path.join(directory, file);
      fs.stat(filePath, (err, stats) => {
      if (err) {
          console.error('Error stating file:', err);
          return;
      }

      if (stats.isDirectory()) {
          if (file === '.git') {
            console.log('Deleting .git directory:', filePath);
            fs.rmdir(filePath, { recursive: true }, err => {
            if (err) {
                console.error('Error deleting .git directory:', err);
            } else {
                console.log('.git directory deleted successfully:', filePath);
            }
            });
          } else {
            deleteGitFolders(filePath); // 递归调用,进入下一级目录
          }
      }
      });
    });
});
}

const startDirectory = './';
deleteGitFolders(startDirectory);

```

李恒道 发表于 2024-4-26 17:21:16

可以直接用fs-extra搞定吧
https://github.com/jprichardson/node-fs-extra/blob/master/docs/remove.md

李恒道 发表于 2024-4-26 17:22:01

懂了
删除特定层级文件...
页: [1]
查看完整版本: 使用node批量删除目录,无论多少层级,封装了一下