在 Linux 上,使用 GNUdu
以字节为单位递归计算目录大小,我可以运行:
du -sb /etc
du
基于-b
参数不可用这一事实,BSD 的等效语法是什么?
答案1
我的第一个想法...
find $HOME | xargs stat -f%z | awk '{ s+=$1 } END { print s }'
...爬行$HOME
,从中获取文件大小(以字节为单位)stat
并使用 求和awk
。
在 NetBSD7 上测试。
答案2
默认情况下,在 BSD 中,du
块计数将以 512 字节块显示,因此该值可以相乘。这是 bash 中的示例:
echo $(($(du -s /etc | cut -f1) * 512))
可以使用 更改块大小BLOCKSIZE
,但最小块大小为 512。更改后的情况如下:
echo $(($(BLOCKSIZE=1024 du -s /etc | cut -f1) * 1024))