我有一个普通文件夹,所以当我右键单击时,转到属性并检查它的数据大小,它给出了 37.3KB。但是当我使用 du 命令时,它显示 104KB
这两个不应该给出相同的答案吗?
重要的是要注意硬链接在计算目录大小时很重要。指向同一个文件的两个硬链接不会占用更多磁盘空间并共享 inode 编号(根据定义),但文件大小的简单计数会将它们计数为双倍。
至少可以切换到 GNU du:
-l, --count-links
count sizes many times if hard linked
du 命令递归地递减所有目录和子目录,并始终为您提供下面任何位置的总和。
GUI 中的属性选项卡并不总是这样做。有时有一个复选框(在那里,或在其他一些首选项对话框中)控制文件夹大小是递归计算的,还是只给你顶层。有时,即使 UI 确实尝试递归计算大小,也需要一段时间来更新它,因此它可能会在一段时间内显示一个较小的临时数字,直到它完成完整的递归搜索。
因此,如果 UI 给出的数字较小,也就不足为奇了。尝试为此查找 UI 首选项。
@ Steve Summit的回答以及后续评论忽略了一些有助于理解问题的有用信息:
ls -ls
不会显示隐藏的子目录。ls -las
.-R
选项。find . -ls
,它确实显示子目录。du
显示包含“许多”字节的块ls
)表示-s
不同实现的结果不同(例如,有些可能显示 1024):
该标准的早期版本没有 -k 选项,这意味着 -s 选项不能便携使用,因为它的块大小是实现定义的,并且用于指定目录中文件占用的块数的单位在 ls -l 列表中固定为 512 字节单位。
du
它应该是 512 字节单元,就像ls -l
.要考虑缺少的空间:
顺便说一句,标准中仅在基本原理-ls
中提到了选项。但它适用于 Linux。find