假设您使用的du
是GNU coreutils,此命令应计算目录内任意数量的常规文件的总表观大小,而对文件数没有任何限制:
find . -type f -print0 | du -scb --files0-from=- | tail -n 1
如果内部有一些硬链接的文件,并且您想分别计算每个硬链接(默认情况下只计算一次多个硬链接),请添加此-l
选项。du
du
与plain的最重要区别du -sb
是递归du
还计算目录的大小,不同文件系统对目录的报告方式不同。为避免这种情况,该find
命令仅用于将常规文件传递给du
。另一个区别是符号链接将被忽略(如果应该对符号链接进行计数,find
则应调整命令)。
此命令也将比plain消耗更多的内存du -sb
,因为使用--files0-from=FILE
make的du
存储设备和所有已处理文件的inode编号,而不是仅记住具有多个硬链接的文件的默认行为。(如果该-l
选项用于多次计数硬链接,则这不是问题,因为存储设备和inode编号的唯一原因是跳过已处理的硬链接文件。)
如果您想获得总大小的可读格式,只需添加-h
选项(之所以有效,du
是因为仅被调用一次并计算总大小本身,这与其他一些建议的答案不同):
find . -type f -print0 | du -scbh --files0-from=- | tail -n 1
或(如果您担心的某些影响-b
会被覆盖-h
)
find . -type f -print0 | du -sc --apparent-size -h --files0-from=- | tail -n 1
xfs
?