Skip to content

Instantly share code, notes, and snippets.

@ded
Created March 5, 2011 10:16
Show Gist options
  • Select an option

  • Save ded/856277 to your computer and use it in GitHub Desktop.

Select an option

Save ded/856277 to your computer and use it in GitHub Desktop.

Revisions

  1. ded created this gist Mar 5, 2011.
    32 changes: 32 additions & 0 deletions directory-size.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    /**
    * usage
    * DIR='public/js' node directory-size.js
    * => "size of public/js is: 12,432
    */

    var fs = require('fs'),
    _ = require('./underscore'); // requires underscore for _.flatten()

    function format(n) {
    return n.toString().replace(/(\d)(?=(\d{3})+$)/g, '$1,');
    }

    var DIR = process.env.DIR || './';

    function getFiles(dir) {
    dir = dir.replace(/\/$/, '');
    return _.flatten(fs.readdirSync(dir).map(function(file) {
    var fileOrDir = fs.statSync([dir, file].join('/'));
    if (fileOrDir.isFile()) {
    return (dir + '/' + file).replace(/^\.\/\/?/, '');
    } else if (fileOrDir.isDirectory()) {
    return getFiles([dir, file].join('/'));
    }
    }));
    }

    var allFiles = getFiles(DIR).map(function(file) {
    return fs.readFileSync(file);
    }).join('\n');

    console.log('size of ' + DIR + ' is: ' + format(allFiles.length));