如何在 emacs dired 中显示文件夹大小?

如何在 emacs dired 中显示文件夹大小?

我已设置 dired 和 dired+ 来查看目录列表,并将其用作移动/复制文件的文件管理器。目前 dired 将“0”列为任何目录中所有子目录的大小。

我希望 dired 能够计算并显示文件夹大小。我希望将其绑定到按键/鼠标单击,因为我不想 dired 在每个缓冲区的每个文件夹上都执行此操作。

截至目前,我已将“在资源管理器中打开”(在 Windows 中为 w32-shell-execute,在 gnome 中为 gnome-open)绑定到“O”,然后我使用 Alt+Enter 来计算子目录大小。

答案1

Emacs 维基页面建议使用以下代码片段来计算所选文件和目录的大小:

 (defun dired-get-size ()
  (interactive)
  (let ((files (dired-get-marked-files)))
    (with-temp-buffer
      (apply 'call-process "/usr/bin/du" nil t nil "-sch" files)
      (message "Size of all marked files: %s"
               (progn 
                 (re-search-backward "\\(^[0-9.,]+[A-Za-z]+\\).*total$")
                  (match-string 1))))))

 (define-key dired-mode-map (kbd "?") 'dired-get-size)

如果我理解正确的话,您希望直接更新 Dired 缓冲区的值。我对 Dired 的内部结构不太熟悉,但我想这应该不难。

答案2

如果你的 Emacs 版本> = 24.4,那么你可以尝试dired-du库。可从 ELPA 存储库获取。

一旦安装了这个库:如果你当前的缓冲区处于 Dired 模式,那么你可以执行以下操作:

C-x M-r

切换“dired-du-mode”并显示 Dired 缓冲区中“就地”目录的递归大小。如果您访问新的 Dired 缓冲区,那么它也将显示递归缓冲区,直到您关闭该模式。

另一个提示:

C-x C-h

切换尺寸格式。有 3 种格式:

  1. 来自‘ls’命令的默认值。

  2. 人类可读的格式。

  3. 带有千位逗号分隔符的数字格式。

您可以自定义选项“dired-du-size-format”以使您的尺寸格式选择持久。

相关内容