如何在nodejs中获取文件夹大小,排除具有glob模式的某些路径?
Posted
技术标签:
【中文标题】如何在nodejs中获取文件夹大小,排除具有glob模式的某些路径?【英文标题】:How to get a folder size in nodejs with excluding certain paths with glob pattern? 【发布时间】:2020-09-19 05:16:43 【问题描述】:我想在存档前计算总存档文件大小以显示进度条。 我有一些从压缩中排除的文件夹是用 glob 模式定义的。 如何使用 glob 过滤器获取文件夹大小?
【问题讨论】:
【参考方案1】:看来您不能使用正则表达式;您可以使用https://www.npmjs.com/package/glob 并遍历与您的全局模式匹配的文件,并获取每个文件的大小。大致是这样的(我没有测试过这段代码):
const fs = require('fs')
const glob = require('glob')
let totalSize = 0 // bytes
// options is optional
glob("**/*.js", options, function (er, files)
files.forEach(f =>
totalSize += fs.statSync(f)
)
)
【讨论】:
这不完全正确我用正确的解决方案回答了这个问题。【参考方案2】:借助上述答案,这就是解决方案
const glob = require('glob');
const fs = require('fs');
function getFolderSizeByGlob(folder, ignorePattern: array )
const filePaths = glob.sync('**', // "**" means you search on the whole folder
cwd: folder, // folder path
ignore: array, // array of glob pattern strings
absolute: true, // you have to set glob to return absolute path not only file names
);
let totalSize = 0;
filePaths.forEach((file) =>
console.log('file', file);
const stat = fs.statSync(file);
totalSize += stat.size;
);
return totalSize;
【讨论】:
太棒了!来吧,接受你自己的答案——它是正确的!很高兴能帮上一点忙 :o)以上是关于如何在nodejs中获取文件夹大小,排除具有glob模式的某些路径?的主要内容,如果未能解决你的问题,请参考以下文章
如何在nodejs中使用sharp调整图像大小然后使用multer上传