コマンドラインからディレクトリ(フォルダ)の合計サイズを確認するにはどうすればよいですか?
ディレクトリ(フォルダー)内のすべてのファイルの合計サイズ(ディスク使用量)を表示する簡単なコマンドはありますか?
私はこれらを試しましたが、彼らは私が望むことをしません:
ls -l
。ディレクトリ内の個々のファイルのサイズのみを表示します。df -h
。ディスク上の空き領域と使用済み領域のみを表示します。
du
コマンドは、ディレクトリごとに再帰的に各FILEのディスク使用量を要約します。たとえば、
du -hs /path/to/directory
-h
は、「人間が読める」数字を取得します。140M
の代わりに143260
(キロバイト単位のサイズ)を取得します-s
は要約用です(そうしないと、フォルダーのサイズだけでなく、すべてのinフォルダーも個別に取得されます)
-h
を使用しているので、次を使用して人間が読める値をソートできます。
du -h | sort -h
sort
の-h
フラグは、「Human Readable」サイズの値を考慮します。
すべてのファイルとディレクトリを再帰的に一覧表示したくない場合は、--max-depth
パラメーターを指定して、表示するアイテムの数を制限できます。最も一般的には、--max-depth=1
du -h --max-depth=1 /path/to/directory
最近、ディレクトリサイズの概要をすばやく提供する、ncursesベースの優れた対話型ツールを見つけました。そのようなツールを何年も探しました。
- ファイル階層をすばやくドリルダウン
- 削除できますツール内からの巨大な一時ファイル
- とても速い
コマンドラインでは baobab と考えてください:
apt-get install ncdu
これにより、サイズが再帰的に検索され、各フォルダー名の横に、下部に合計サイズとともに、すべて人間の形式で配置されます
du -hsc *
tree
は、このジョブの別の便利なコマンドです。
Sudo apt-get install tree
経由でインストールして、次を入力します。
tree --du -h /path/to/directory
...
...
33.7M used in 0 directories, 25 files
man tree から:
-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 -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/lib
992K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
52K /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files
答えは、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 1
255729664
$ find . -ls | awk '{sum += $7} END {print sum}'
249008169
読み取り可能な形式のディレクトリサイズのみについては、以下を使用します。
du -hs directoryname
これはおそらく正しいセクションにありませんが、コマンドラインから次のことを試すことができます。
ls -sh filename
-s
はサイズで、-h
は人間が読める形式です。
-l
を使用して、以下のようにls
リストに表示します。
ls -shl
du /foldername
は、フォルダーのサイズを知るための標準コマンドです。 manページを読んでオプションを見つけることをお勧めします。
man du
コマンドを使用する前に、manページ(利用可能 online )を読む必要があります。
動作するPOSIXスクリプトは次のとおりです。
- ファイル
- ファイル
- ディレクトリ
- ディレクトリ
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'
目的のディレクトリに多くのサブディレクトリがある場合は、次を使用します。
$ cd ~/your/target/directory
$ du -csh
-c、--totalは総計を生成します
-s、--summarizeは各引数の合計のみを表示します
-h、-人間が読み取れる形式の人間が読み取れる印刷サイズ(1K 234M 2Gなど)
これにより、現在のディレクトリ内のすべてのファイル/フォルダによるメモリ使用量の合計が生成されます。