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
就不会打扰它们。