
我有 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種格式:
來自“ls”命令的預設值。
人類可讀的格式。
帶有千位逗號分隔符號的數字格式。
您可以自訂選項“dired-du-size-format”以使您的尺寸格式選擇持久。