0

我有一个普通文件夹,所以当我右键单击时,转到属性并检查它的数据大小,它给出了 37.3KB。但是当我使用 du 命令时,它显示 104KB

这两个不应该给出相同的答案吗?

4

3 回答 3

3

重要的是要注意硬链接在计算目录大小时很重要。指向同一个文件的两个硬链接不会占用更多磁盘空间并共享 inode 编号(根据定义),但文件大小的简单计数会将它们计数为双倍。

至少可以切换到 GNU du:

   -l, --count-links
          count sizes many times if hard linked
于 2015-06-22T19:05:03.727 回答
1

du 命令递归地递减所有目录和子目录,并始终为您提供下面任何位置的总和。

GUI 中的属性选项卡并不总是这样做。有时有一个复选框(在那里,或在其他一些首选项对话框中)控制文件夹大小是递归计算的,还是只给你顶层。有时,即使 UI 确实尝试递归计算大小,也需要一段时间来更新它,因此它可能会在一段时间内显示一个较小的临时数字,直到它完成完整的递归搜索。

因此,如果 UI 给出的数字较小,也就不足为奇了。尝试为此查找 UI 首选项。

于 2015-06-18T12:03:40.820 回答
0

@ Steve Summit的回答以及后续评论忽略了一些有助于理解问题的有用信息:

  • 一个简单的ls -ls不会显示隐藏的子目录。
  • 您应该看到所有隐藏子目录的名称,使用ls -las.
  • 要递归查看它们的大小,请添加-R选项。
  • 显示内容的更好方法是 with find . -ls,它确实显示子目录。
  • 在任何一种情况下,都du显示包含“许多”字节的块
  • POSIX 对 blocksize 的措辞(请参阅参考资料中的基本原理ls)表示-s不同实现的结果不同(例如,有些可能显示 1024):

    该标准的早期版本没有 -k 选项,这意味着 -s 选项不能便携使用,因为它的块大小是实现定义的,并且用于指定目录中文件占用的块数的单位在 ls -l 列表中固定为 512 字节单位。

  • 另一方面,标准规定du它应该是 512 字节单元,就像ls -l.

要考虑缺少的空间:

  • 如果您有很多非常小的文件,它们可以使用比块数少得多的字节。
  • 同样,您可能有隐藏文件未在问题中说明。
  • 最后,一些属性对话框可能只显示文件。目录也占用空间。

顺便说一句,标准中仅在基本原理-ls中提到了选项。但它适用于 Linux。find

于 2015-06-19T10:38:32.147 回答