如何在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
相关产品推荐
相关产品推荐

