You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中删除目录(含多级子目录)下所有TXT文件

解决方案:递归删除多级目录下的所有TXT文件

嘿,我完全懂你遇到的麻烦——想用fs-extra一次性删掉目标目录及其所有子目录里的TXT文件,但直接用通配符*.txt只能匹配当前目录的文件,递归遍历子目录又太繁琐。其实咱们可以搭配glob模块来轻松解决这个问题,它专门用来处理文件路径的模式匹配,完美支持递归查找!

步骤1:安装依赖

首先需要安装glob(fs-extra本身不支持递归通配符,得靠它来定位文件):

npm install fs-extra glob

步骤2:编写代码实现批量删除

下面是异步和同步两种实现方式,你可以根据自己的需求选择:

异步版本(推荐,不阻塞主线程)

const fse = require('fs-extra');
const glob = require('glob');

// 用glob递归查找所有.txt文件,**表示匹配所有子目录
glob('./desktop/directory/**/*.txt', (err, matchedFiles) => {
  if (err) {
    console.error('查找文件时出现错误:', err);
    return;
  }

  // 批量删除找到的所有文件
  Promise.all(matchedFiles.map(filePath => fse.remove(filePath)))
    .then(() => console.log('所有TXT文件已成功删除'))
    .catch(deleteErr => console.error('删除文件时出错:', deleteErr));
});

同步版本(适合简单脚本,阻塞主线程)

const fse = require('fs-extra');
const glob = require('glob');

// 同步获取所有匹配的TXT文件路径
const matchedFiles = glob.sync('./desktop/directory/**/*.txt');

// 逐个删除文件
matchedFiles.forEach(filePath => {
  try {
    fse.removeSync(filePath);
  } catch (err) {
    console.error(`删除文件 ${filePath} 时出错:`, err);
  }
});

console.log('所有TXT文件已成功删除');

补充说明

  • **/*.txt是glob的核心语法:**会递归匹配目标目录下的所有子目录,加上*.txt就能精准定位所有TXT文件。
  • 如果不想额外安装glob模块,也可以用Node.js内置的fs.promises.readdir递归遍历目录,但代码会繁琐很多,glob是更简洁的选择。

内容的提问来源于stack exchange,提问作者Evan Meredith-Davies

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:00:40