
Я настроил dired и dired+ для просмотра списков каталогов и использую его как файловый менеджер для перемещения/копирования файлов. В настоящее время dired указывает '0' в качестве размера для всех подкаталогов в любом каталоге.
Я хотел бы, чтобы dired вычислял и отображал размеры папок. Я хотел бы, чтобы это было связано с нажатием клавиши/щелчком мыши, поскольку я не хочу, чтобы dired делал это для каждой папки в каждом буфере.
На данный момент у меня «открыть в проводнике» (w32-shell-execute в Windows и gnome-open в gnome) привязано к «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', чтобы сделать ваш выбор формата размера постоянным.