コマンドラインからディレクトリ(フォルダ)の合計サイズを決定するにはどうすればよいですか?

ディレクトリ(フォルダ)内のすべてのファイルの合計集計サイズ(ディスク使用量)を表示する簡単なコマンドはありますか?

私はこれらを試してみましたが、彼らは私が望むことをしません:

  • ls -l これは、ディレクトリ内の個々のファイルのサイズのみを表示します。
  • df -h これは、私のディスク上の空き領域と使用されている領域のみを表示します。

コマンド du "ディレクトリに対して再帰的に、各ファイルのディスク使用量を要約します。",

du -hs /path/to/directory
  • -h "人間が読める"数字を取得することです。 140M の代わりに 143260 (Kバイト単位のサイズ)
  • -s 要約のためのものです(そうでなければ、フォルダのサイズだけでなく、すべてのものも取得します フォルダ別)

あなたが使用しているように -h 以下を使用して、人間が読める値を並べ替えることができます

du -h | sort -h

その -h 上のフラグ sort "人間が読める"サイズ値を考慮します。


すべてのファイルとディレクトリを再帰的に一覧表示しないようにしたい場合は、次のように指定できます。 --max-depth 表示される項目の数を制限するパラメータ。 最も一般的には, --max-depth=1

du -h --max-depth=1 /path/to/directory

最近、私はすぐにあなたのディレクトリサイズについての概要を提供します偉大な、ncursesベースの対話型ツールを、発見しました。 何年もの間、そのようなツールを検索しました。

  • ファイル階層を迅速にドリルダウン
  • ツール内から巨大な一時ファイルなどを削除することができます
  • 非常に高速

それを次のように考えてください バオバブ コマンドラインの場合:

apt-get install ncdu

これにより、サイズが再帰的に検索され、各フォルダ名の横に配置され、合計サイズが下部に表示されます。

du -hsc *

お楽しみください!

du foldername

そのコマンドの詳細 ここでは、

以下は、合計、フォルダ、およびファイルサイズを印刷するために使用しているものです:

$ du -sch /home/vivek/* | sort -rh

詳細

 ------------------------------------------------------------   -c, --total          produce a grand total   -h, --human-readable          print sizes in human readable format (e.g., 1K 234M 2G)   -s, --summarize          display only a total for each argument -------------------------------------------------------------   -h, --human-numeric-sort          compare human readable numbers (e.g., 2K 1G)   -r, --reverse          reverse the result of comparisons

出力

 70M    total 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

tree この仕事のための別の便利なコマンドですか:

を経由してインストールするだけで sudo apt-get install tree 次のように入力します:

tree --du -h /path/to/directory......33.7M used in 0 directories, 25 files

から マンツリー:

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories      (and their files, and so on). The total amount of used space is also given in the final report (like      the 'du -c' command.)

答えはそれを明らかにしました du ディレクトリの合計サイズを見つけるためのツールです。 ただし、考慮すべきいくつかの要因があります:

  • たまには, du 出力は、個々のファイルのサイズの合計とは異なる可能性があるファイルシステムによって割り当てられたスペースを報告するため、誤解を招く可能性 通常、ファイルシステムは、1文字だけを格納していても、ファイルに4096バイトを割り当てます。

  • 2の力および10単位の力による出力相違。 その -h に切り替える du バイト数を次のように除算します2^10 (1024), 2^20 (1048576) などは、人間が読める出力を与えるために。 多くの人々は、10の累乗(例えば、1K=1000、1M=1000000)を見ることにもっと慣れていて、結果に驚くかもしれません。

ディレクトリ内のすべてのファイルのサイズの合計をバイト単位で見つけるには、次のようにします:

find <dir> -ls | awk '{sum += $7} END {print sum}'

例:

$ du -s -B 1255729664$ find .  -ls | awk '{sum += $7} END {print sum}'249008169

あなたはツールのほこりを使用することができます:

PS C:\git> dust   0B       ┌── templates           │                                      █ │   0%   0B     ┌─┴ git-core              │                                      █ │   0%   0B   ┌─┴ share                   │                                      █ │   0%  76B   ├── readme.md               │                                      █ │   0% 156K   │   ┌── less.exe            │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ │   2% 2.7M   │   ├── git-remote-https.exe│▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█████████████████ │  42% 3.6M   │   ├── git.exe             │▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██████████████████████ │  56% 6.5M   │ ┌─┴ git-core              │███████████████████████████████████████ │ 100% 6.5M   ├─┴ libexec                 │███████████████████████████████████████ │ 100% 6.5M ┌─┴ .                         │███████████████████████████████████████ │ 100%

私の例はWindowsからのものですが、LinuxとAppleもサポートされています:

https://github.com/bootandy/dust

私はに条件付けられています ll にエイリアスされているコマンド ls -alF. それはちょうど一番下にファイルのファイル数とサイズが不足しています。 私は一緒に遊んだ dutree しかし、私は必要な合計を得ることができませんでした。 だから私は作成しました lll 私のためにそれを行うには。

あなたの中で ~/.bashrc 次の場所に配置します:

lll () {    ls -alF "$@"    arr=($(ls -alF "$@" | awk '{TOTAL+=$5} END {print NR, TOTAL}'))    printf " \33[1;31m ${arr[0]}\33[m line(s).  "    printf "Total size: \33[1;31m ${arr[1]}\33[m\n"#    printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"}

ファイルを保存し、それを使用してリソース . ~/.bashrc (または、端末を再起動することもできます)。


サンプル出力

についての素晴らしいこと ll 出力はそれの色です。 これは以下で維持されます lll しかし、使用するときに失われた find または du:

lll sample output.png


TL;DR

あなたがに加えることができるボーナス機能 ~/.bashrc と呼ばれています BytesToHuman(). これは、ほとんどのコンソールユーザーが大量の数値をMiB、GiBなどに変換することを期待しています:

function BytesToHuman() {    # https://unix.stackexchange.com/questions/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc-like-du-ls1/259254#259254    read StdIn    b=${StdIn:-0}; d=''; s=0; S=(Bytes {K,M,G,T,E,P,Y,Z}iB)    while ((b > 1024)); do        d="$(printf ".%02d" $((b % 1024 * 100 / 1024)))"        b=$((b / 1024))        let s++    done    echo "$b$d ${S[$s]}"} # BytesToHuman ()

次の二つの行の間のコメントを反転します lll () このように見える関数:

#    printf "Total size: \33[1;31m ${arr[1]}\33[m\n"    printf "Total size: \33[1;31m $(BytesToHuman <<< ${arr[1]})\33[m\n"

これで、出力は次のようになります:

lll sample output 2.png

いつものようにと再ソースすることを忘れないでください . ~/.bashrc 変更を加える時はいつでも。 (またはもちろん端末を再起動します)

PS-自己検疫で二週間は、最終的に私にこの五歳の目標に取り組むための時間を与えました。

du /foldername フォルダのサイズを知るための標準コマンドです。 マニュアルページを読んでオプションを見つけることをお勧めします:

man du

あなたはmanページ(利用可能)を読むべきです オンライン)コマンドを使用する前に。

BtrfsのようなCoWファイルシステムではほぼゼロの意味を持つかもしれないという友好的なメモ。