emacs dired でフォルダーのサイズを表示するにはどうすればいいですか?

emacs dired でフォルダーのサイズを表示するにはどうすればいいですか?

私はディレクトリ一覧を表示するために dired と dired+ をセットアップし、ファイルの移動/コピー用のファイル マネージャーとして使用しています。現在、dired はどのディレクトリでもすべてのサブディレクトリのサイズとして「0」をリストします。

dired でフォルダのサイズを計算して表示したいと思います。dired がすべてのバッファのすべてのフォルダでこれを実行するのは望ましくないので、これをキーストローク/マウスクリックにバインドしたいと思います。

現時点では、「エクスプローラーで開く」(Windows では w32-shell-execute、gnome では gnome-open) を「O」にバインドし、そこから Alt+Enter を使用してサブディレクトリのサイズを計算しています。

答え1

これ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 の内部構造に十分精通しているわけではありませんが、それほど難しいことではないと思います。

答え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. 3 桁ごとのコンマ区切りの数値形式。

オプション「dired-du-size-format」をカスタマイズして、サイズ形式の選択を永続化することができます。

関連情報