如何在 emacs dired 中顯示資料夾大小?

如何在 emacs dired 中顯示資料夾大小?

我有 dired 和 dired+ 設定來查看目錄列表,並將其用作我的文件管理器來移動/複製文件。目前 dired 將“0”列為任何目錄中所有子目錄的大小。

我想要計算並顯示資料夾大小。我希望將其綁定到擊鍵/滑鼠單擊,因為我不希望 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”以使您的尺寸格式選擇持久。

相關內容