【发布时间】:2015-08-07 12:06:58
【问题描述】:
如何在 node.js 中获取目录的大小而不递归遍历目录中的所有子项?
例如
var fs = require('fs');
fs.statSync('path/to/dir');
会给我一个这样的对象,
{ dev: 16777220,
mode: 16877,
nlink: 6,
uid: 501,
gid: 20,
rdev: 0,
blksize: 4096,
ino: 62403939,
size: 204,
blocks: 0,
atime: Mon May 25 2015 20:54:53 GMT-0400 (EDT),
mtime: Mon May 25 2015 20:09:41 GMT-0400 (EDT),
ctime: Mon May 25 2015 20:09:41 GMT-0400 (EDT) }
但size 属性不是目录的大小,而是子目录(也就是其中的文件的总和)。
如果不递归地找到子项的大小(然后将它们相加),就没有办法获得目录的大小(包括其中包含的文件的大小)吗?
我基本上是在尝试做与du -ksh my-directory 等效的操作,但如果给定的目录真的很大(例如/),那么递归获取真正的目录大小需要永远......
【问题讨论】:
-
我知道
du -ksh /需要很长时间,所以也许这个问题是......静音......我希望我在这里缺少一个 linuxy 的东西...... -
du正是这样做的,所以不,你无法绕过它。 -
据我所知,目录不会跟踪它们下面所有文件的累积大小,因此获得累积大小的唯一方法是递归和添加。这不是一个快速的操作。