全力で怠けたい

怠けるために全力を尽くしたいブログ。

du コマンドでよく使うオプションのメモ。

du コマンドでわりとよく使うオプションのメモ。

普段は AWS の EC2 インスタンスに入って使うことが多いのでこのエントリーを書くときも EC2 インスタンスに入って du コマンドを実行した結果とかをメモっている。

du コマンドのバージョン。

$ du --version
du (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Torbjörn Granlund, David MacKenzie, Paul Eggert,
and Jim Meyering.

du コマンドのオプション

du コマンドはディスクの使用量を表示するコマンド。

自分はちょいちょい使うわりにはオプションとかよく覚えてなくて使うたびにググったりが多い気がするのでよく使うオプションをメモしておく。

コマンドの動作は以下のディレクトリ構造とそれぞれ 1MiB のサイズの dat ファイルを配置して確認いく。

$ tree
.
├── fuga
│   ├── fuga-1.dat
│   └── fuga-2.dat
├── hoge
│   ├── hoge-1.dat
│   └── hoge-children
│       ├── hoge-children-1.dat
│       ├── hoge-children-2.dat
│       ├── hoge-children-3.dat
│       ├── hoge-children-4.dat
│       └── hoge-children-5.dat
└── piyo
    ├── piyo-1.dat
    ├── piyo-2.dat
    └── piyo-3.dat

--help オプション: ヘルプ

--help オプションを指定すると du コマンドの使い方を表示する……んだけど man du が使えないときにしか使わない。

$ du --help
Usage: du [OPTION]... [FILE]...
  or:  du [OPTION]... --files0-from=F
Summarize disk usage of each FILE, recursively for directories.

Mandatory arguments to long options are mandatory for short options too.
  -0, --null            end each output line with 0 byte rather than newline

# 省略

オプションなし

du コマンドをオプションなしで実行するとカレントディレクトリ配下のサイズを再帰的に集計して表示する。

$ du
5120    ./hoge/hoge-children
6144    ./hoge
2048    ./fuga
3072    ./piyo
11264   .

-d, --max-depth オプション: 集計するディレクトリの階層を指定

-d オプションか --max-depth オプションで集計するディレクトリの階層を指定する。

du --max-depth 1 するとカレントディレクトリとカレントディレクトリ直下のディレクトリそれぞれのサイズをディレクトリごとに集計する。

$ du --max-depth 1
6144    ./hoge
2048    ./fuga
3072    ./piyo
11264   .

du --max-depth 0 を指定するとカレントディレクトリのサイズだけ集計する (= 階層がゼロ)

$ du --max-depth 0
11264   .

FILE: サイズを集計するディレクトリかファイル

オプションじゃないんだけど FILE についても書いておく。

$ du --help
Usage: du [OPTION]... [FILE]...
  or:  du [OPTION]... --files0-from=F

FILE はサイズを集計するディレクトリかファイルを指定する。

たとえば du fuga と指定すると fuga ディレクトリのサイズを集計するし du piyo と指定すると piyo ディレクトリのサイズを集計する。

$ du fuga
2048    fuga/

$ du piyo
3072    piyo

du fuga piyo みたいに FILE を複数指定すると fuga ディレクトリと piyo ディレクトリそれぞれのサイズを集計する。

$ du fuga/ piyo/
2048    fuga/
3072    piyo/

du みたいに FILE を指定しないときは du . みたいにカレントディレクトリを指定するのと同じ。

$ du
5120    ./hoge/hoge-children
6144    ./hoge
2048    ./fuga
3072    ./piyo
11264   .

$ du .
5120    ./hoge/hoge-children
6144    ./hoge
2048    ./fuga
3072    ./piyo
11264   .

-s, --summarize オプション: ディレクトリの合計サイズだけ表示

-s オプションか --summarize オプションを指定すると指定したディレクトリのサイズだけを表示する……と書くとなんのことやらだけど、ようはサブディレクトリごとのサイズは表示しなくなるということ。 => --summarize オプションは --max-depth 0 を指定するのと同じ

たとえば du . みたいに --summarize オプションを指定しないとカレントディレクトリとカレントディレクトリ配下のディレクトリそれぞれのサイズが表示されるけど、

$ du .
5120    ./hoge/hoge-children
6144    ./hoge
2048    ./fuga
3072    ./piyo
11264   .

du --summarize . みたいに --summarize` オプションを指定するとカレントディレクトリのサイズだけ表示する。

$ du --summarize .
11264   .

-B, --block-size オプション: サイズの単位を指定

-B オプションか --block-size オプションでサイズの単位を指定する。 -B オプションか --block-size オプションを指定しないときは K (KiB) を指定するのと同じ。

$ du --summarize .
11264   .

$ du --summarize --block-size K .
11264K  .

$ du --summarize --block-size M .
11M .

-B オプションか --block-size オプションは以下を指定できる。

指定できる値 表示単位
KB キロバイト (KB)
K キビバイト (KiB)
MB ガバイト (MB)
M メビバイト (MiB)
GB ギビバイト (GB)
G ギビバイト (GiB)
TB テビバイト (TB)
T テビバイト (TiB)

実は -B オプションか --block-size オプションは数字なら何でも指定できる。面倒くさいからやらないけど……

$ du --summarize --block-size KB .
11535kB .

$ du --summarize --block-size 1000 .
11535   .

$ du --summarize --block-size K .
11264K  .

$ du --summarize --block-size 1024 .
11264   .

-k, -m オプション: --block-size オプションの短縮形

-k オプションと -m オプションはそれぞれ --block-size K--block-size M を指定するのと同じ。

$ du -k --summarize .
11264   .

$ du -m --summarize .
11  .

-h, --human-readable オプション: 人間が読みやすくするやつ

-h オプションか, --human-readable オプションを指定するとサイズに応じた単位で表示する。

個人的にはディレクトリのサイズでソートしちゃうことが多いのであまり使わないオプション。

$ du --human-readable --summarize .
11M .