看鸟哥LINUX私房菜时一处看不懂

2014-01-10 22:06:01 +08:00
 hazard
书上在讲du指令时,时这么说的

[root@www ~]# du [-ahskm] 文件或目录名称
选项与参数:
-a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。
-h :以人们较易读的容量格式 (G/M) 显示;
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以 KBytes 列出容量显示;
-m :以 MBytes 列出容量显示;

范例一:列出目前目录下的所有文件容量
[root@www ~]# du
8 ./test4 <==每个目录都会列出来
8 ./test2
....中间省略....
12 ./.gconfd <==包括隐藏文件的目录
220 . <==这个目录(.)所占用的总量
# 直接输入 du 没有加任何选项时,则 du 会分析『目前所在目录』
# 的文件与目录所占用的硬盘空间。但是,实际显示时,仅会显示目录容量(不含文件),
# 因此 . 目录有很多文件没有被列出来,所以全部的目录相加不会等于 . 的容量喔!
# 此外,输出的数值数据为 1K 大小的容量单位。


但是,实际显示时,仅会显示目录容量 这句话是什么意思?
意思是目录容量只算目录记录“文件名与对应inode号”所占用的磁盘容量吗?
2630 次点击
所在节点    问与答
8 条回复
hazard
2014-01-10 22:13:11 +08:00
SErHo
2014-01-10 22:24:26 +08:00
就是只打印出目录的大小。
hazard
2014-01-10 22:29:44 +08:00
@SErHo 累加目录里所包含的各种文件(档案,目录)的大小吗?
sdysj
2014-01-10 22:38:27 +08:00
命令都要看书?
SErHo
2014-01-10 22:47:35 +08:00
@hazard 就是相当于对每个文件夹递归调用这个命令吧。
onemoo
2014-01-11 23:00:47 +08:00
就是说执行命令后,会先列出每一个子目录的容量,最后是“.”目录的容量。
如果你把它列出的子目录的容量加在一起的话,会发现并不等于最后那个“.”的容量。
子目录容量的总和会小于“.”目录的容量。
原因很简单:当前目录的容量 = 所有子目录的大小 + 当前目录中文件的大小
你明白了吧
其实这里根本就不是该较真的地方

还不懂的话,就自己du一个小目录看看。
hazard
2014-01-11 23:18:02 +08:00
@onemoo 感谢回复,不过还有个地方不明白,当前目录的容量 = 所有子目录的大小 + 当前目录中文件的大小 中 当前目录中文件的大小 包括 子目录记录文件名与inode号 所占的大小吗?我这里测试是包括的。。。。想确认一下。。
onemoo
2014-01-13 11:59:54 +08:00
@hazard
目录的大小是包含目录本身所占用的block的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/96505

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX