Linuxコマンド一覧

duコマンド|どのディレクトリが重いのかを調べる

__ __ _ _____
\ \ / /__| |_|_ _|__ _ __ _ __ ___
\ \ /\ / / _ \ '_ \| |/ _ \ '__| '_ ` _ \
\ V V / __/ |_) | | __/ | | | | | |
\_/\_/ \___|_.__/|_|\___|_| |_| |_| |_
 
du を試すためのサンドボックスです。実機のファイルには影響しません。
user@webterm:~/project$
 

du はディレクトリごとの使用量を調べるコマンドです。合計だけ出す `-sh`、1階層だけ見る `--max-depth=1`、大きい順に並べる書き方を、ブラウザ上のターミナルで打ちながら確認できます。

最終更新: 2026-09-06

書式

du [オプション] [ディレクトリ]

指定しなければ、いまいる場所を起点にします。

まず打ってみる

-h を付けると、読みやすい単位で出ます。

$ du -h
24K	./logs
4.0K	./src
4.0K	./docs
4.0K	./node_modules/left-pad
12K	./node_modules/lodash
20K	./node_modules
56K	.

下から順に集計されていて、最後の行がこのディレクトリ全体です。 合計だけでよければ -s を付けます。

$ du -sh
56K	.

-s は summarize、-h は human readable の頭文字です。 この2つはほぼ常に組にして使います。

1階層だけ見る

素の du は下まで全部たどるので、node_modules の中身まで並んでしまいます。 --max-depth=1 を付けると、1階層ぶんの内訳になります。

$ du -h --max-depth=1
24K	./logs
4.0K	./src
4.0K	./docs
20K	./node_modules
56K	.

これで「logs が重い」と分かります。 重いディレクトリの中で同じことを繰り返すのが、犯人にたどり着く最短の手順です。

$ du -sh logs
24K	logs

大きい順に並べる

数が多いときは sort につなぎます。

$ du -s * | sort -nr
24	logs
20	node_modules
5	src
5	docs
1	README.md

ここで -h を外しているのには理由があります。 -h の出力は 4.0K12M のように単位が混ざるので、数として並べ替えると桁が合いません。 並べるときはブロック数のまま扱い、当たりが付いてから -sh で読み直します。

数えたくないものを外す

--exclude で、集計から外せます。

$ du -h --exclude=node_modules
24K	./logs
4.0K	./src
4.0K	./docs
36K	.

自分で消せないもの(node_modules.git)を外しておくと、消せるものだけが見えます。

実務での使いどころ

du は、ディスクが埋まった原因を突き止めるときに打つコマンドです。

場面打ち方
このディレクトリ全体の大きさを知るdu -sh .
どこが重いか1階層ずつ追うdu -h --max-depth=1
大きい順に並べるdu -s * | sort -nr
特定のディレクトリだけ測るdu -sh logs
消せないものを除いて測るdu -h --exclude=node_modules

つまずきやすいところ

単位の付いていない数字はブロック数です。

$ du -s
56	.

1ブロックは 1KB なので、56 は 56KB のことです。 人に見せる数字なら -h、並べ替えるならブロック数のまま、と使い分けます。

存在しないパスは、そう言われます。

$ du -sh nope
du: cannot access 'nope': No such file or directory

du はディレクトリを下までたどります。 巨大なディレクトリでそのまま打つと、結果が出るまで待たされます。 --max-depth=1 を付けて、上の階層から順に降りるほうが速く終わります。

df と数字が合わないことがあります。 消したはずのファイルをまだ開いているプロセスがあると、du からは見えないのに df の使用量は減りません。 df が減らないときは、ファイルを掴んだままのプロセスを疑ってください。

手を動かして覚える

webterm.appこのサイト

learn.webterm.app別のサイト

>_WEBTERM LEARN

WebTerm Learn|1つのコマンドから、使える状態へ

コマンドは単体で覚えるより、実際の作業の流れの中で使うほうが身につきます。順番に積み上げていくコースがあります。

コースを見る

関連するコマンド

df / ls / find / tree

よくある質問

du と df の違いは何ですか?
`df` は機械全体でどれだけ空いているか、`du` はどのディレクトリが使っているかを見ます。ディスクが埋まったときは `df` で気づき、`du` で犯人を探す、という順番になります。
単位の付いていない数字は何ですか?
ブロック数(1ブロック=1KB)です。`-h` を付けると `24K` や `1.2G` のような読みやすい単位になります。
どこが重いのかを手早く知るにはどう打ちますか?
`du -h --max-depth=1` で1階層だけの内訳を出します。重いディレクトリが分かったら、その中で同じことを繰り返します。
大きい順に並べるにはどうしますか?
`du -s * | sort -nr` です。`-h` を付けた出力は単位が混ざると正しく並ばないので、並べ替えるときは `-h` を外します。
サーバーで Permission denied がたくさん出ます。
読めないディレクトリがあるからです。`du -sh /var 2>/dev/null` のようにエラーだけ捨てると、結果が読めるようになります。