[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

14.2 du: ファイルのディスク使用量を概算する

du は、指定した一連のファイルのディスク使用量を報告する。 引数がディレクトリの場合は、サブディレクトリごとのディスク使用量も報告する。

書式:

 
du [option]… [file]…

引数を指定しないと、du は、カレントディレクトリのディスク使用量を報告する。 通常、ディスク使用量は 1024 バイトを 1 単位として表示するが、 この動作は変更することができる (see section ブロックサイズ)。 なお、小数点以下は、切り上げて整数にする。

2 個以上のハードリンクが同一のファイルを指している場合は、そのうちの 1 個のみが計算の対象になる。引数 file の順番によって、どのリンクが計算の対象になるかが変わってくるので、 引数の順番を変更すると、du が出力する数値や項目が変化するかもしれない。

このプログラムでは以下のオプションが使用できる。参照: 共通オプション.

-0
--null

各行の末尾に改行ではなく、ゼロバイト (ASCII NUL) を出力する。 このオプションを使用すると、出力するデータに、途中に改行を挟むものがあっても、 他のプログラムがその出力を解析できるようになる。

-a
--all

ディレクトリだけでなく、すべてのファイルについて使用量を表示する。

--apparent-size

ディスクの使用量ではなく、見かけのサイズを表示する。 ファイルの見かけのサイズとは、通常ファイルに対して wc -c、 あるいは、もっと普通に ls -l --block-size=1stat --format=%s を実行したときに返されるバイト数である。 たとえば、‘zoo’ という単語を改行を付けずに書き込んだファイルなら、 当然ながら、見かけのサイズは 3 になる。 だが、そうした小さなファイルも、そのファイルが存在するファイルシステムのタイプと設定次第で、 0 から 16 KiB、あるいは、それ以上のディスクスペースを占有するかもしれないのだ。 もっとも、穴空きファイル (sparse file) の場合は事情が別である。たとえば、

 
dd bs=1 seek=2GiB if=/dev/null of=big

上記のコマンドで作成した穴空きファイルは、見かけのサイズこそ 2 GiB だが、最近のほとんどのシステムでは、実際に使用するディスクスペースは、 ほとんど 0 である。

-B size
--block-size=size

size によって単位の大きさを変更してから、サイズを表示する (see section ブロックサイズ)。 たとえば、‘-BG’ と指定すれば、1,073,741,824 バイトを 1 単位として、サイズを表示する。

-b
--bytes

--apparent-size --block-size=1 と同じ。

-c
--total

すべての引数を処理した後で、全引数からなる総計を表示する。 このオプションを使用すれば、指定したファイルやディレクトリについてディスク使用量の合計を知ることができる。

-D
--dereference-args

コマンドラインで引数に指定されたシンボリックリンクの参照を行う。 コマンドライン引数以外のシンボリックリンクには影響がない。 このオプションは、‘/usr/tmp’ のような、 シンボリックリンクであることが多いディレクトリのディスク使用量を調べるときに、重宝である。

-d depth
--max-depth=depth

ディレクトリ階層の基点 (訳注: 要するに、コマンドラインで指定されたディレクトリ) から最大 DEPTH 段階下がったところまでにある各ディレクトリについて、 ディスク使用量の合計を表示する (‘--all’ オプションが付いているときは、ファイルについても表示する)。 基点自体は段階 0 なので、du --max-depth=0du -s と同じことになる。

--files0-from=file

コマンドラインで名前を指定されたファイルの処理を行わない。その代わりに、 ファイル file に名前が書き込まれているファイルの処理を行う。 なお、file 中に書かれている各ファイル名は、ゼロバイト (ASCII NUL) で終端されていなければならない。このオプションは、ファイル名のリストが長すぎて、 コマンドライン長の上限を超過してしまいそうなときに、 便利である。そうした場合、duxargs 経由で実行するのは、望ましくない。 なぜなら、xargs はファイルのリストをいくつかの部分に分割して du に渡すので、du はリスト全体の ‘--total’ (‘-c’) オプションを使用した結果ではなく、 部分リストごとの ‘--total’ (‘-c’) オプションを使用した結果を表示してしまうからである。 ASCII NUL で終端されたファイル名のリストを得る方法の一つは、 GNU find に ‘-print0’ を付けて使うことである。 file に ‘-’ を指定すれば、 ASCII NUL で終端されたファイル名を標準入力から読み込むことができる。

-H

--dereference-args’ (‘-D’) と同じである。

-h
--human-readable

各サイズの後ろに、メビバイトなら ‘M’ といった、大きさを示す文字を付ける。 1000 ではなく、1024 の累乗が使われるので、‘M’ は 1,048,576 バイトを表している。このオプションは、‘--block-size=human-readable’ と同じである。1000 の累乗が使いたければ、"‘--si’ オプションを使用すればよい。

--inodes

ブロックの使用状態ではなく、inode の使用状態をリストする。 このオプションが役に立つのは、多くのファイルを収納しているために、 ファイルシステムの inode スペースを大量に消費しているディレクトリを探すときである (df の ‘--inodes’ オプションも参照すること)。 このオプションは、‘-a’, ‘-c’, ‘-h’, ‘-l’, ‘-s’, ‘-S’, ‘-t’, ‘-x’ といったオプションと組み合わせて使ってもよい。 しかし、ブロックサイズ関係の他のオプション、たとえば、‘-b’, ‘-m’, ‘--apparent-size’ などを渡しても、無視される。

-k

デフォルトのブロックサイズがどうなっていようと、1 ブロック 1024 バイトでサイズを表示する (see section ブロックサイズ)。このオプションは ‘--block-size=1K’ に等しい。

-L
--dereference

シンボリックリンクの参照を行う (リンク自体のディスク使用量ではなく、 リンクが指しているファイルやディレクトリの使用量を表示する)。

-l
--count-links

すべてのファイルを計算に入れる。 すなわち、(ハードリンクとして) 前に現れたことがあっても、計算に入れる。

-m

デフォルトのブロックサイズを変更し、1 ブロック 1,048,576 バイトのブロック数でサイズを表示する (see section ブロックサイズ)。 このオプションは、‘--block-size=1M’ と同じである。

-P
--no-dereference

du が出会った各シンボリックリンクについて、シンボリック自体の使用ディスクスペースを計算する。

-S
--separate-dirs

通常、(‘--summarize’ オプションを使用しない場合の) du の出力において、d というディレクトリ名の隣に表示されるサイズは、 d 以下にあるすべてのエントリのサイズの合計に、 d 自体のサイズを加えたものである。それに対して、‘--separate-dirs’ オプションを指定すると、d というディレクトリ名に対して報告されるサイズは、 いかなるサブディレクトリのサイズも含まないものになる。

--si

各サイズにの後ろに、メガバイトなら ‘M’ といった、SI 形式の略号を付ける。 1024 ではなく、1000 の累乗が使用されるので、‘M’ は 1,000,000 バイトを表している。このオプションは、‘--block-size=si’ と同じことである。1024 の累乗が使いたければ、‘-h’ や ‘--human-readable’ を使用すればよい。

-s
--summarize

各引数についてその合計ディスク使用量のみを表示する (訳注: すなわち、 引数がディレクトリの場合、そのサブディレクトリごとの情報まで表示しない)。

-t size
--threshold=size

指定された size を目安にして、表示する対象を取捨する。size は、 通常モードではディスク使用量を指し (see section ブロックサイズ)、‘--inodes’ オプションと組み合わせた場合は inode 使用数を指す。 (訳注: ディスク使用量の目安として使う場合、size の単位は、デフォルトではバイトである。 もちろん、K, M, G などの接尾辞を付けることもできる。)

size が正の数ならば、du はサイズがそれ以上である対象のみを表示する。

size が負の数ならば、du はサイズがそれ以下である対象のみを表示する。

GNU の find を使えば、特定のサイズのファイルを見つけることができる。 それに対して、du の ‘--threshold’ を使うと、 ディレクトリも指定サイズに基づいて篩い分けることができるのである。

--threshold’ オプションは、‘--apparent-size’ オプションと組み合わせることができるのに留意していただきたい。 その場合は、見かけのサイズに基づいて表示対象を絞り込むことになる。

--threshold’ オプションは、‘--inodes’ オプションと組み合わせることもできる。 その場合は、inode 数に基づいて表示対象を絞り込むことになる。

200 メガバイト以上のサイズを持つディレクトリを捜すには、 ‘--threshold’ オプションを次のように使えばよいだろう。

 
du --threshold=200MB

見かけのサイズが 500 バイト以下のディレクトリやファイルを捜すには (‘-a’ を使っていることに注意)、‘--threshold’ を次のように使えばよい。

 
du -a -t -500 --apparent-size

ルートファイルシステム上にあるディレクトリで、20000 以上の inode を使用しているものを、/ 以下のディレクトリ階層で捜すには、 ‘--threshold’ を次のように使えばよい。

 
du --inodes -x --threshold=20000 /
--time

ディレクトリやそのサブディレクトリに存在するファイルについて表示する際に、 その最終更新日時 (modification time) も表示する。

(訳注: 一つ留意していただきたいことがある。ディレクトリのタイムスタンプについては、 そのディレクトリ以下にあるファイルのうち (そのディレクトリ直下のファイルとはかぎらない)、 最終更新日時がもっとも新しいファイルのタイムスタンプと同一のものが表示される。 すなわち、ディレクトリのタイムスタンプは、‘ls -l’ で表示されるものとは違うことがあるわけだ。 このオプションや、そのバリエーションである次の二つのオプションは、 あるディレクトリ以下を最後に使用したのはいつかを知るのに便利である。)

--time=ctime
--time=status
--time=use

ディレクトリ以下にあるファイルについて表示する際に、最終更新日時ではなく、 最終ステータス変更日時 (inode 中の ‘ctime’) を表示する。

(訳注: 原文でもこの三つのオプションを等価なものとして並べているが、 訳者としては、‘--time=use’ と等価なのは、‘--time=ctime’ ではなく、 ‘--time=atime’ ではないかと思う。ご自分で確かめていただきたい。)

--time=atime
--time=access

ディレクトリ以下にあるファイルについて表示する際に、最終更新日時ではなく、 最終アクセス日時 (inode 中の ‘atime’) を表示する。

--time-style=style

タイムスタンプを style 形式で表示する。このオプションは、‘--time’ オプションと併せて指定したときにのみ効果がある。style は以下の一つでなければならない。

+format

format を使って、タイムスタンプを表示する。その場合、format は、date コマンドの書式引数と同じように解釈される (see section date: システムの日付や時刻を表示、設定する)。 たとえば、‘--time-style="+%Y-%m-%d %H:%M:%S"’ と指定すると、 du の表示するタイムスタンプは、 ‘2002-03-30 23:45:56’ のようになる。date の場合と同様、 format の解釈は、LC_TIME ロケール・カテゴリの影響を受ける。

full-iso

タイムスタンプを省略なしで表示する。 すなわち、ISO 8601 の日付、時刻、タイムゾーンという構成要素を nanosecond (10 億分の 1 秒) の精度で使用するわけだ。 一例を挙げると、‘2002-03-30 23:45:56.477817180 -0700’ といった表示になる。この形式は、‘+%Y-%m-%d %H:%M:%S.%N %z’ と同じである。

long-iso

ISO 8601 の日付と時刻の構成要素を分の単位まで表示する。たとえば、 ‘2002-03-30 23:45’。このタイムスタンプは、‘full-iso’ タイム スタンプより短く、日常作業にはたいてい十分である。この形式は ‘+%Y-%m-%d %H:%M’ と同じである。

iso

タイムスタンプに ISO 8601 書式の日付を表示する。たとえば、 ‘2002-03-30’ といった具合である。この形式は、‘+%Y-%m-%d’ と同じである。

--time-style’ オプションのデフォルト値は、 環境変数 TIME_STYLE を使って指定することができる。 TIME_STYLE が設定されていない場合、デフォルトの形式は ‘long-iso’ である。 ls と共通の TIME_STYLE を使えるようにするため、 ‘+’ で始まる TIME_STYLE の値が、改行を含んでいる場合は、 改行以後の文字は無視されることになる。 また、TIME_STYLE の値が ‘posix-’ で始まる場合、‘posix-’ は無視される。 さらに、TIME_STYLE の値が ‘locale’ の場合、TIME_STYLE は無視される。

-X file
--exclude-from=file

--exclude’ に似ているが、除外するパターンを file から 1 行につき 1 パターン読み込む点が違う。file が ‘-’ なら、パターンを標準入力から読み込む。

--exclude=pattern

再帰的な処理を行っているとき、pattern にマッチするサブディレクトリやファイルをスキップする。 たとえば、du --exclude='*.o' と指定すると、名前が ‘.o’ で終わるファイルを除外することになる。

-x
--one-file-system

処理される引数が存在するファイルシステムとは別のファイルシステムにあるディレクトリをスキップする。

BSD システムでは、HP-UX システムから NFS マウントしているファイルについて、 du は正確な値の半分のサイズを報告する。逆に、HP-UX システムでは、 BSD システムから NFS マウントしているファイルについて、du は正確な値の 2 倍のサイズを報告する。これは HP-UX にある欠陥のせいであり、 HP-UX の du プログラムも、そのとばっちりを受けているのである。

終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This document was generated on August 15, 2017 using texi2html 1.82.