最終更新日 2025年1月19日
duコマンドの全オプション一覧を確認したいという方は下記のリンクで街頭の場所にジャンプできます!
スポンサーリンクLinuxのduコマンドとは?
Linuxを使っていると、ディスクの使用状況を確認したい場面がよくあります。サーバー管理者や開発者にとって、ディスク容量の管理は重要な業務のひとつです。そんなときに便利なのが du
コマンドです。
du
(Disk Usageの略)コマンドは、指定したディレクトリやファイルのディスク使用量を表示するコマンドで、どのフォルダが容量を圧迫しているのかを簡単に調べることができます。
本セクションでは下記について解説します。
duコマンドの役割
du
コマンドを使うことで、以下のような情報を取得できます。
- 特定のディレクトリやファイルのサイズ
- 各ディレクトリの使用量を階層ごとに表示
- ディスク容量を消費している大きなフォルダの特定
du
コマンドのユースケース
duコマンドはどのような場面で使用することが多いんですか?
当方が実際に現場で利用した経験からすると以下3つのケースで利用することが多かったです。
❶サーバーのディスク容量が不足している。どのフォルダが大きいのか調べたい!
❷バックアップ用のディレクトリのサイズを確認したい!
❸不要なデータを削除して空き容量を増やしたい!
なぜディスク使用量の確認が重要なのか?
Linuxサーバーやローカル環境でディスクがいっぱいになると、次のような問題が発生するため、ディスク使用量の確認が必要になります。
❌ 新しいファイルを保存できない → アプリやシステムが正常に動作しなくなる
❌ ログファイルが溜まりすぎる → 重要なログの記録ができなくなる
❌ システムパフォーマンスの低下 → スワップ領域が不足し、動作が遅くなる
そのため、定期的にディスク使用量を確認し、不要なファイルを削除することが重要です。
スポンサーリンクlsコマンドやdfコマンドとの違い
ディスク容量を確認するコマンドには、ls
や df
もありますが、それぞれ役割が異なります。
コマンド | 役割 |
---|---|
du | ファイルやディレクトリごとのディスク使用量を表示 |
ls -l | 各ファイルのサイズを表示(ただし、ディスク使用量とは異なる) |
df | ファイルシステム全体の空き容量と使用量を表示 |
例えば、ls -lh
コマンドでファイルサイズを確認できても、実際にディスク上で占有しているサイズとは異なる場合があります。そのため、ディスクの使用状況を正確に把握するには du
コマンド を使う必要があります。
次のセクションでは、du
コマンドの基本的な使い方を詳しく解説していきます!
duコマンドの基本的な使い方
du
コマンドは、Linuxのファイルやディレクトリのディスク使用量を確認するために使われる便利なコマンドです。このセクションでは、基本的な使い方を解説し、シンプルな例やよく使うオプションについて紹介します。
このセクションでは以下について説明します。
duコマンドのみ(オプション無)の実行例
まずは、du
コマンドをオプションなしで実行してみましょう。オプション無しで実行すると、現在のディレクトリのディスク使用量を確認できます。
コマンド例
du
実行結果
4096 ./documents
20480 ./backup
512000 .
この出力結果の意味は以下の通りです。
4096 ./documents
→ documents
フォルダのディスク使用量は 4KB20480 ./backup
→ backup
フォルダのディスク使用量は 20MB512000 .
→ カレントディレクトリ全体のディスク使用量は 500MB
オプション無しで実行すると、現在のディレクトリのディスク使用量を確認できるんですね。
でもこの出力結果だと、ディスクの使用量が見づらいです。。。
私計算が苦手なので。。。
デフォルトでは、各フォルダのサイズがバイト単位で表示されます。このままだと数値が分かりにくいため、後ほど紹介する -h
オプション を使うと見やすくなりますよ!
duコマンドの基本構文
du
コマンドの基本的な書き方は以下の通りです。
du [オプション] [対象ディレクトリ]
例えば、/home/user
ディレクトリの使用量を調べたい場合は、以下のように実行します。
du /home/user
そうなんですね。他には何か使い方とかあるんですか?
他にも、特定のファイルのディスク使用量を出力することが可能でその場合は、ファイル名を指定すればOKです。du myfile.txt
よく使う基本オプション一覧
du
コマンドには多くのオプションがありますが、特によく使われるものを紹介します。
オプション | 説明 | 使用例 |
---|---|---|
-h(--human-readable) | 人間が読みやすいサイズ(KB、MB、GB)で表示 | du -h |
-s(--summarize) | ディレクトリ全体の合計サイズのみ表示 | du -sh /var/log |
-c(--total) | 合計サイズを最後に表示 | du -ch /home/user |
-a(--all) | ファイルごとのサイズも表示 | du -ah /home/user |
-d N(--max-depth=N) | 階層をNレベルまで表示 | du -h --max-depth=1 /home/user |
-x(--one-file-system) | 異なるファイルシステムをまたがない(異なるファイルシステムにマウントされているディレクトリを無視 して計算する) | du -hx / |
du -x
(または du --one-file-system
)オプションの意味が良く分からないので教えてください。
du -x(または du –one-file-system)オプションは、異なるファイルシステムをまたがずにディスク使用量を計算する ためのオプションです。
通常、du コマンドを実行すると、指定したディレクトリ以下のすべてのファイル・フォルダのサイズを計算します。
しかし、-x オプションを使うと、異なるファイルシステムにマウントされているディレクトリを無視 して計算することができます。
どんな時に使うんですか?
具体的には、以下のようなシーンで使用します。
- ディスクの空き容量を確認するときに、特定のパーティションだけを調べたい
- 外付けHDDやネットワークドライブ(NFS)がマウントされている環境で、本体のストレージのみを分析したい
du
の計算速度を上げるために、不要なファイルシステムを除外したい
オプションの使用例
下記の4つのオプションの使用例と出力結果について解説します。
- 人間が読みやすい単位で表示(-h オプション)
- ディレクトリの合計サイズのみ表示(-s オプション)
- ディスク使用量を階層別に表示(–max-depth=N オプション)
- ディスクを圧迫している大きなフォルダを探す(sort と head の組み合わせ)
- duコマンドの全オプション一覧
duコマンドのマニュアルは下記コマンドを実行することで確認できます。
コマンド:man du
人間が読みやすい単位で表示(-h
オプション)
デフォルトの du
コマンドはバイト単位の数値を出力しますが、-h
オプションを使うと KB, MB, GB などの単位 で表示できます。
コマンド例
du -h
実行結果
4.0K ./documents
20M ./backup
500M .
実行結果の見方と考え方
4.0K ./documents
→ documents
フォルダのサイズは 4KB(4,096バイト)
→ ファイルがほとんど入っていない、またはフォルダ自体のメタデータのみの可能性
20M ./backup
→ backup
フォルダのサイズは 20MB
→ いくつかの大きなファイルが格納されていると考えられる
500M .
→ カレントディレクトリ(現在のフォルダ)全体のディスク使用量は 500MB
→ documents
や backup
を含む、すべてのサブディレクトリ・ファイルの合計サイズ
ちなみにdu -hオプションは、マニュアルには下記のように記載されています。
スポンサーリンクディレクトリの合計サイズのみ表示(-s
オプション)
通常の du
コマンドは各フォルダのサイズを細かく表示しますが、特定のディレクトリの合計サイズだけ を知りたい場合は -s
オプションを使います。
コマンド例
du -sh /var/log
ちなみに上記のコマンドの意味は以下です。du -ah .
→ 現在のディレクトリ(.
)内の すべてのファイルとフォルダのサイズを取得(-a
によりファイルも含む、-h
で人間が読みやすい単位に変換)sort -rh
→ サイズが大きい順にソート(-r
:降順、-h
:人間が読みやすい単位に対応)head -10
→ 上位10件のみを表示(ディスク使用量の大きい順に10件だけリストアップ)
実行結果
2.1G /var/log
上記の出力結果から、/var/log
ディレクトリ全体の使用量が 2.1GB であることが分かります。
ディスク使用量を階層別に表示(--max-depth=N
オプション)
du
はデフォルトでサブディレクトリの情報もすべて表示しますが、表示する深さを制限したい場合は --max-depth=N
を使います。
例えば、/home/user
の直下のフォルダだけのサイズを知りたい場合は以下のように実行します。
コマンド例
du -h --max-depth=1 /home/user
実行結果
2.1G /home/user/downloads
500M /home/user/documents
10G /home/user/videos
15G /home/user
この du -h --max-depth=1 /home/user
の出力結果は、/home/user
の直下にあるディレクトリごとのディスク使用量を表示 しています。--max-depth=1
を指定しているため、1階層目のフォルダのみ のサイズが表示され、それ以上のサブフォルダの詳細は省略されています。
ディスクを圧迫している大きなフォルダを探す(sort
と head
の組み合わせ)
ディスクの空き容量が少なくなったとき、どのフォルダが最も容量を消費しているのかを調べたい場合があります。
以下のコマンドを実行すると、現在のディレクトリ内でディスクを大量に使用しているフォルダ トップ10 を表示できます。
コマンド例
du -ah . | sort -rh | head -10
実行結果
10G ./videos
2.1G ./downloads
1.5G ./backup
800M ./documents
最も容量を消費しているのは videos(10GB)、次に downloads(2.1GB)、backup(1.5GB)だということが読みとれます。
不要なものがあれば削除して、ディスクの空きを増やしましょう!
duコマンドの全オプション一覧
duコマンドのオプションを一覧化すると以下になります。
オプション | 説明 | 使用例 |
---|---|---|
-0, --null | 出力の各行を改行ではなく NUL 文字で終わらせる | du -0 |
-a, --all | ディレクトリだけでなく、すべてのファイルのサイズを表示 | du -a /home |
--apparent-size | 実際のファイルサイズを表示(ディスク使用量とは異なる場合あり) | du --apparent-size /var |
-B, --block-size=SIZE | 指定したブロックサイズ(例: -BM で1MB単位)で表示 | du -BM /home |
-b, --bytes | --apparent-size + --block-size=1 と同じ(バイト単位 で表示) | du -b /var/log |
-c, --total | 合計サイズを最後に表示 | du -ch /home /var |
-D, --dereference-args | コマンドラインで指定した シンボリックリンクのみ解決 | du -D /path/symlink |
-d, --max-depth=N | 指定した階層(N)までのサイズのみ表示 | du -h --max-depth=2 /home |
--files0-from=F | NUL区切りのファイル名リスト(F)からディスク使用量を計算 | du --files0-from=filelist.txt |
-H | -D と同じ(コマンドラインで指定した シンボリックリンクのみ解決) | du -H /symlink |
-h, --human-readable | KB/MB/GB単位 で分かりやすく表示 | du -h /var |
--inodes | ブロック使用量ではなく inode 使用量を表示 | du --inodes /home |
-k | サイズを1KB単位で表示 | du -k /home |
-L, --dereference | すべてのシンボリックリンクを解決 | du -L /symlink |
-l, --count-links | ハードリンクを別々のファイルとしてカウント | du -l /hardlink |
-m | サイズを1MB単位で表示 | du -m /var/log |
-P, --no-dereference | シンボリックリンクをたどらない(デフォルト設定) | du -P /symlink |
-S, --separate-dirs | サブディレクトリのサイズを含めずにフォルダ単体のサイズを表示 | du -S /var |
--si | -h と似ているが、1000の倍数(MB=1000KB)で計算 | du --si /var |
-s, --summarize | 指定したディレクトリの合計サイズのみ表示 | du -sh /home |
-t, --threshold=SIZE | 指定したサイズ以下/以上のエントリを除外 | du -h -t 1M /var |
--time | ディレクトリ内のファイルの最終更新時刻を表示 | du --time /home |
--time=WORD | アクセス時間(atime)、変更時間(mtime)などを選択 | du --time=atime /var |
--time-style=STYLE | 時刻のフォーマットを指定(iso, full-iso, long-iso など) | du --time-style=full-iso |
-X, --exclude-from=FILE | 指定したファイルリスト(FILE)にあるパターンを除外 | du -X exclude_patterns.txt /home |
--exclude=PATTERN | 指定したパターンのファイルを除外 | du --exclude=*.log /var |
-x, --one-file-system | 異なるファイルシステムをまたがずに計算 | du -x / |
--help | ヘルプを表示して終了 | du --help |
--version | バージョン情報を表示して終了 | du --version |
次のセクションでは、より実践的な使い方を紹介します!
duコマンドと組み合わせて使うと便利なコマンド
du
コマンドは、他のLinuxコマンドと組み合わせることで、より便利に使えます。
特に find
、sort
、awk
などは、ディスク管理をより効率化するために役立ちます。
今回はfind、awkとduコマンドを組み合わせた便利なコマンドを紹介します。
find
+ du
特定のサイズ以上のファイルを検索
例えば、1MB 以上のファイルを探し、そのサイズを du
で表示するには、以下のようにします。
find /home -type f -size +1M -exec du -h {} +
このコマンドは、まず、find /home によって /home ディレクトリ以下を検索対象にします。
次に、-type f を指定することで、ディレクトリではなく ファイル(f) のみを検索対象 にします。
-size +100M という条件を指定することで、サイズが100MBを超えるファイル のみを抽出します。
最後に、-exec du -h {} + を実行することで、見つかったファイルのサイズを du -h(人間が読みやすい単位で表示するオプション付き) で表示します。
awk
+ du
カスタマイズしたサイズ表示
特定のディレクトリの合計サイズを GB 単位で表示するには、awk
を使って計算します。
du -s /var | awk '{printf "%.2f GB\n", $1/1024/1024}'
このコマンドは、/var ディレクトリの合計サイズを取得し、それをGB単位で分かりやすく表示するためのものです。
まず、du -s /var を実行すると、/var ディレクトリ全体の使用量が表示されます。このとき、サイズの単位はKBであり、フォルダごとの詳細は表示されず、合計値のみが出力されます。例えば、/var のディスク使用量が5GBだった場合、5242880 /var という結果が得られます。この数値は5242880KBを示しており、1GB=1024MB、1MB=1024KB であるため、5GBに相当します。
次に、awk を使ってこの数値をGB単位に変換し、より見やすい形式に整えます。awk はテキスト処理を行うコマンドであり、ここでは$1 を使って du の出力の最初の数値(KB単位のサイズ)を取得し、それを /1024/1024 で割ることでGB単位に変換します。そして printf “%.2f GB\n” を使用することで、小数点2桁までのGB表記に整形します。
この処理によって、出力結果は 5.00 GB のようにGB単位で表示されます。
ゴリタン
インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。
CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。