我已设置 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 种格式:
来自‘ls’命令的默认值。
人类可读的格式。
带有千位逗号分隔符的数字格式。
您可以自定义选项“dired-du-size-format”以使您的尺寸格式选择持久。