私のサーバー(Ubuntu 12.04)で何かを移動したい場合は、次のコマンドを使用して、現在のディレクトリの各サブディレクトリサイズと現在のディレクトリの総数を知りたいと思いますdu
。
$ du -sm * .
34 A
23 B
1 .
サブディレクトリサイズの合計(最初の2行の値の合計)が現在のディレクトリとそのサブディレクトリ(最後の行)のサイズよりも大きいため、この内容を読みました。 Ubuntu 8.04を実行しているサーバーでは、-sm
30年前にこのオプションを初めて使用したときと同じように機能します。
$ cd /var/spool
$ du -sm * .
1 cron
1 cups
0 mail
2 postfix
3 .
この違いが発生するのは、Ubuntu 12.04システムにはcoreutils
バージョン8.13があり、Ubuntu 8.04に6.10があるためですcoreutils
。以下に関連するいくつかの最適化を行いました。これ、コマンドラインで指定してもディレクトリを2回計算/表示しません。最新バージョンではdu -sm . .
1 行だけで回答を提供し、以前のバージョンでは 2 つの同じ行で回答を提供します。
12.04システムではこれを実行できますが、du -sm * ; du -sm .
実際に興味のあるディレクトリに対してこれを行うことはオプションではありません。何百万ものファイルに1テラバイトを超えるデータを保持する28の直接サブディレクトリがあるからです。このディレクトリツリーを一度表示するには数時間かかり、ディレクトリ情報はオペレーティングシステムに比べて大きいように見え、キャッシュできないため、2番目のディレクトリツリーを実行するのにすぐに同じ時間がかかります(たとえば、大きなディレクトリでdu
実行している場合)。ではありません)。 2回行うと一般的な効果が得られません。du -s
第二に、サブツリーははるかに高速です。
結果をプログラムに入れて最初の列に値を追加できることを知っていますが、tee
以前の動作を復元する方法がある場合は良いでしょうdu
。
不足しているcoreutilsコマンドラインオプションまたはインストールするためのdu
選択肢はありますか?du
(また、遅くなったような気がしますがdu
、これはおそらく保存して処理するデータの量が長年にわたって増加したためです。
答え1
du dir1 dir2
すべてのディスク使用量とその内容を繰り返し報告しますdir1
。dir2
ファイルは一度だけ計算されます。それ以外の場合は、ディスク使用量に誤った答えを提供します。
あなたはそれを使用することができます:
du -c dir1 dir2
両方の合計ディスク使用量も必要な場合。
だから:
du -sc -- *
現在のディレクトリに隠されていないファイルとディレクトリのディスク使用量と累積サイズの要約を提供します。
GNUを使用すると、du
次のこともできます。
du -ad1
または
du -a --max-depth=1
ディスク使用量は1つのレベル(.
したがってサブディレクトリ)以下に報告されます。これは-a
、現在のディレクトリ内のディレクトリではないことを報告するのと同じですdu *
。
du
次のオプションを使用すると、GNUにファイル数を数回カウントさせることができます-l
。
du -ls -- * .
それほど効率的ではなく、実際に望むものではないかもしれません。
答え2
このオプションは-c
合計を生成します。つまり、あなたのユースケースで、これは以前のバージョンとdu -smc *
ほぼ同じ出力を提供します。.
total
du -sm * .
du
$ du -smc *
34 A
23 B
57 total
ユースケースが質問に記載されているものと異なる場合でも、この-c
オプションはとにかく過去に得られた結果に近い結果を得るのに役立ちます。