如何在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上传

如何在nodejs中使用sharp调整图像大小然后使用multer上传

js如何读取客户端文件大小(不只是图片)

如何使用 NodeJS 从列表中排除特定字符串

Node.js如何获取文件大小

iOS 获取文件大小