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


4

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

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

到目前为止,我已经将“在资源管理器中打开”(在Windows中为w32-shell-execute,在gnome中为gnome-open)绑定到了“ O”,我可以使用Alt + Enter从中计算子目录的大小。

Answers:


3

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

 (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的内部知识还不太熟悉,但是我想这并不难。


如果无法更新Dired缓冲区,我可以。我还在emacs Wiki(emacswiki.org/emacs/Sunrise_Commander- 跳到页面的最后)中也读到,很难做到这一点。但是,我想要一个可以在Linux和Windows上运行的解决方案。实际上,我主要是在Windows中为逃避资源管理器而苦恼。Windows是否有“ du”?
koushik 2012年

我发现我可以在Windows中运行“ du”(cygwin或git-适用于我)。感谢您的解决方案!如果我能以某种方式使该信息保留在
干燥的

3

如果您的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. 带有数千个逗号分隔符的数字格式。

您可以自定义选项“ dird-du-size-format”以使尺寸选择持久化。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.