29
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

duコマンドでサブディレクトリを含めたディレクトリ容量を表示する。

Last updated at Posted at 2018-05-13

#はじめに
duコマンドをオプションなしに実行すると、サブディレクトリの容量もすべて表示します。
ざっくりとディレクトリごとの容量を知りたいときはすべて表示されると不便なので、
オプションをつけてサブディレクトリを含めたディレクトリ容量を取得したのですが、
オプションの指定で混乱したのでそのまとめです。

#結論

  • duでサブディレクトリをまとめて表示するには-sオプション
  • 複数ディレクトリに対して実行するには*で指定するか、find -maxdepthの結果を-exec {} \;du shに渡す。

##パターン1:

OK:

du-sh./*
[root@d-new var]# du -sh /var/*
0       /var/adm
80M     /var/cache
0       /var/crash
8.0K    /var/db

NG:

du-sh./
[root@d-new var]# du -sh /var/
295M    /var/

###du コマンドの-s と -S オプション

-s -hオプションを指定しています。
-hは表示容量の単位を人間が見やすい値するオプションです。

問題はサブディレクトリを含めた容量を表示するオプションをどうするかです。
結論から言うと-sオプションを付けて、実行したいディレクトリを指定することで取得可能です。
※上記にも例がありますが、複数ディレクトリの場合はdu -sh /var/*のように指定します。

-s-S オプションの違いで少しはまりました。
manコマンドでduの説明を確認すると以下のように説明されています。

-s, --summarize
display only a total for each argument

-S, --separate-dirs
for directories do not include size of subdirectories

-Sはdo not include size of subdirectories(サブディレクトリのサイズを含めない)とあるので、
いけると思ったのですが、実行結果はオプションなしで実行した時と同様に、
サブディレクトリの容量も表示されてしまうようでした。

後々調べたのですが、-Sは”サブディレクトリを含めないディレクトリの容量も合わせて表示する”
という意味です。この部分で少し理解に詰まったので別でまとめたいと思います。

ということで今回は、-s オプションを使用します。
コマンドの実行対象とされたディレクトリのサブディレクトリを含めた容量を表示します。

du -sh /var/だけではvar配下すべての合計量になってしまうので、
実行対象をdu -sh /var/*でvar配下のすべてのディレクトリにします。

var配下のディレクトリに対して、ディレクトリごとにそのサブディレクトリの容量もまとめて出力するコマンドになりました。

##パターン2

[root@-new var]# find /var/ -maxdepth 1 -type d -exec du -sh {} \;
295M    /var/
0       /var/tmp
81M     /var/lib
135M    /var/log
0       /var/adm

find コマンドを使用するパターンです。
findコマンドはサブディレクトリも検索対象になりますが、
-maxdepth level を使用することで、検索対象となるディレクトリの最大階層を指定可能です。

-maxdepth levels
Descend at most levels (a non-negative integer) levels of directories below the command line arguments. -maxdepth 0
means only apply the tests and actions to the command line arguments.

-exec {} \;findコマンドの結果を別々に渡して、du -shを実行します。

29
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?