有没有办法让 Thunar 显示“递归”文件大小?

pzk*_*pfw 7 xfce filesystem xubuntu thunar filemanager

我正在使用 Thunar 1.6.3,目前当我查看一堆文件夹时,它看起来像这样:

Folder 1        8,2 kB
Folder 2        4,1 kB
Folder 3        4,1 kB
Folder 4        0   kB
Run Code Online (Sandbox Code Playgroud)

我不确定这些“大小”数字从何而来,但我确信它们不会反映文件夹中所有内容的实际大小,因为当我右键单击并选择“属性”文件夹时(所有这些都只有千字节大小)加起来超过 100 Gb。

问题

  • 为什么 Thunar 就像 12.04 和 14.04 上的命令行一样,显示文件夹大小为 4K?这个数字是什么意思?
  • 有没有办法在终端、Thunar 或任何其他文件管理器中显示复合大小,即文件夹和所有内容的计算递归大小?(注意:我不是在寻找 shell 脚本解决方案)。

Mah*_*esh 9

我应该解释一下 Linux 文件系统结构来解释这一点。大多数 linux 文件系统都做类似的事情,但我假设 ext4,这是当前的默认值。

文件系统结构

  • inode 是文件系统理解为逻辑单元的基本块。
  • 目录 inode 包含对其他 inode 的引用。
  • 文件 inode 包含元数据、实际数据和对连续块的引用,以防文件必须以非连续方式存储。

链接

  • Ext4 支持两种链接。硬而软。
  • 硬链接是直接对 inode 的引用。每个文件至少有一个硬链接,来自它所属的目录。
  • 由于目录只是一个 inode,具有有关 inode 引用组的信息,因此它可以引用自身或父节点。换句话说,一个文件夹可以是同一个文件夹的子文件夹和父文件夹。

好吧,这可能会让人感到困惑。让我解释。假设您有三个文件夹,A、B、C,如下所示。

C is in B.  
B is in A.
Run Code Online (Sandbox Code Playgroud)

现在,有趣的部分是,C 可以指向与 A 相同的 inode,从而创建有时称为循环引用循环的内容。如果您尝试递归,您将遇到一个永无止境的循环。

  • 软链接是记录其目标位置的目录路径的普通文件。它们只是在文件系统上标记,而不是一行文本,它们应该被解释为指向其他位置的链接。例如,当您使用“创建链接”/“在此处链接”选项时,Nautilus 会创建软链接。

所以呢?

因此,尝试以递归方式计算大小有其怪癖。默认情况下尝试递归计算大小是一个坏主意。但是,我知道的所有体面的文件管理器的属性对话框都显示递归计算的总大小,因为这是普通用户所期望的。

windows没有问题吗?

实际上,Windows 使用一种称为 NTFS 的不同文件系统格式,它维护所有文件及其大小的列表。所以它总是可以很容易地告诉总大小。

那我们为什么不使用NTFS呢?

它不支持 Unix 的权限概念(分别rwx针对所有者、组和 Universe),并且这个单一的原因使它不适合用作 Linux 文件系统。Ext4 带来了很多问题,这个小小的不便对很多人来说并不重要。

好吧。给我我需要的尺寸。

你试了du吗?

如何du工作?

du代表磁盘使用。它实际上对 inode 块进行计数,注意不要重复计算它们。把尺寸加起来,你就有了总尺寸。

TL; 博士

使用du -hs <foldername>找到磁盘上的文件夹的实际大小。阅读man du更多信息。

  • 感谢您提供所有详细信息!尽管如此,如果可以选择在文件管理器的默认视图中启用递归文件大小显示,那就太好了。在搜索为什么一堆文件夹需要这么多内存时,总是右键单击或在控制台上使用 du + cd 是很痛苦的。 (3认同)

小智 5

thunar顶部菜单中,转到“编辑”>“配置自定义操作”,添加一个新的自定义操作:

  1. 基本选项卡:任何名称 [例如。文件夹 - 文件大小],命令du -h -c %N | grep total | zenity --text-infodu -chs %N | zenity --text-info用于选定的文件夹或/和文件大小,后跟总大小。
  2. 外观条件选项卡:选中所有复选框。

我在http://crunchbang.org找到了这个解决方案