du命令显示什么?

时间:2015-06-18 11:57:34

标签: linux terminal du

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

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

3 个答案:

答案 0 :(得分:3)

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

这至少转换为GNU du:

   -l, --count-links
          count sizes many times if hard linked

答案 1 :(得分:1)

du命令以递归方式下降所有目录和子目录,并始终为您提供包含在下方任何位置的总数。

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

因此,如果UI提供较小的数字,那就不足为奇了。尝试为此找到UI首选项。

答案 2 :(得分:0)

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

  • 一个简单的ls -ls将不会显示隐藏的子目录。
  • 您应该使用ls -las
  • 查看任何隐藏子目录的名称
  • 以递归方式查看其大小,添加-R选项。
  • 显示内容的更好方法是find . -ls,它会显示子目录。
  • 在任何一种情况下,du都会显示包含“很多”字节的块
  • POSIX对块大小的看法(参见rationale in ls)表示-s的结果在各实现之间有所不同(例如,有些可能显示1024):
      

    此标准的早期版本没有-k选项,这意味着-s选项无法移植使用,因为其块大小是实现定义的,并且用于指定文件占用的块数的单位在ls -l列表中的目录中修复为512字节单位。

  • 另一方面,du的标准表示它应该是512字节单位,就像ls -l一样。

考虑到缺失的空间:

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

顺便说一下,标准中仅在rationale中提到了-ls的{​​{1}}选项。但它适用于Linux。