import fs from "fs"; import path from "path"; const find = ( folder: string, keyword: string[], callback: (val: string[]) => void ) => { type entryUnit = { name: string; fullPath: string; }; let arr: entryUnit[] = []; // all the files in a array const iterateDir = (base: string) => { const curDir = fs.readdirSync(base); curDir.forEach((val) => { const entry = path.join(base, val); if (fs.statSync(entry).isDirectory()) { iterateDir(entry); } else { arr.push({ name: val, fullPath: entry, }); } }); }; iterateDir(folder); callback( arr .filter((val) => keyword.find((key) => val.name === key)) .map((val) => val.fullPath) ); }; find("./", ["index.html", "qq.png"], (arr) => { console.log(arr); });
自定义过滤器:
const find = (folder, filter, callback) => {
let arr = []; // all the files in a array
const iterateDir = (base) => {
const curDir = fs.readdirSync(base);
curDir.forEach((val) => {
const entry = path.join(base, val);
if (fs.statSync(entry).isDirectory()) {
iterateDir(entry);
} else {
arr.push({
name: val,
fullPath: entry,
});
}
});
};
iterateDir(folder);
callback(arr.filter(filter).map((val) => val.fullPath));
};
find(
"./",
(val) => {
return false;
},
(arr) => {
console.log(arr);
}
);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了