du 报告目录的大小比内容总和多 4 KB

Rav*_*avi 2 disk-usage

ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ ls ./control
amer  calls  q1  q2  q3  quit.c  RCS  SCCS
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ du ./control
20  ./control/calls
16  ./control/RCS
40  ./control/SCCS
96  ./control
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ du ./control/*
0   ./control/amer
20  ./control/calls
4   ./control/q1
4   ./control/q2
4   ./control/q3
4   ./control/quit.c
16  ./control/RCS
40  ./control/SCCS
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$
Run Code Online (Sandbox Code Playgroud)

请注意du控制目录占用 96 字节的报告。现在,当我添加单个文件消耗的字节时,它变成了 92 个字节。

同理,对于所有报告,du 显示的内容比内容总和多 4 个字节。

这额外的 4 个字节来自什么?

编辑#1

ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1$ ls -ld $_
drwxrwxr-x 5 ravbholua ravbholua 4096 Dec  8 21:39 control
Run Code Online (Sandbox Code Playgroud)

du (或 linux)使用 1024 字节块 (1KB) 来报告 (1024 * 4 = 4096) 文件。

ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ ls
ame  amer  calls  q1  q2  q3  quit.c  RCS  SCCS
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ du ame
4   ame
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ cat ame
a
ravbholua@ravbholua-Aspire-5315:~/CCPP/HelloWorld/das/das1/control$ ll ame
-rw-rw-r-- 1 ravbholua ravbholua 2 Dec  8 21:39 ame
Run Code Online (Sandbox Code Playgroud)

因此,上面仅包含字母“a”和“输入密钥”的文件“ame”占用了我的磁盘空间的 4 KB。

所以这意味着对于一个文件/目录,linux 正在分配我的 4KB 磁盘空间!!!!它将以 4KB 的倍数分配。

还要添加一件事:ls -l以字节为单位报告目录的大小,而不是常规文件的大小。随着参考。对于上面的文件“ame”,很明显,对于常规文件,ls -l将大小报告为字符数而不是字节数。

小智 7

control目录本身有大小4,它是包含在你的第一个命令。第二个变体不计算目录大小,因为您没有将其传递给du,而只是将其内容传递给。

也有可能你有隐藏文件(点文件),在扩展*glob时被排除在外,这样du就不会打扰它们。