GNU/Linux >> Linux の 問題 >  >> Linux

実際のディレクトリ サイズを (du から) 取得する方法は?

du のいくつかのバージョン 引数 --apparent-size をサポート ディスク使用量の代わりに見かけのサイズを表示します。したがって、コマンドは次のようになります:

du -hs --apparent-size

Ubuntu 12.04 LTS に含まれている du の man ページから:

--apparent-size
      print apparent sizes,  rather  than  disk  usage;  although  the
      apparent  size is usually smaller, it may be larger due to holes
      in (`sparse') files, internal  fragmentation,  indirect  blocks,
      and the like

Unix 標準ツール (POSIX) を使用して、人間が判読できるディレクトリ サイズを表示するスクリプトを次に示します。

#!/bin/sh
find ${1:-.} -type f -exec ls -lnq {} \+ | awk '
BEGIN {sum=0} # initialization for clarity and safety
function pp() {
  u="+Ki+Mi+Gi+Ti+Pi+Ei";
  split(u,unit,"+");
  v=sum;
  for(i=1;i<7;i++) {
    if(v<1024) break;
    v/=1024;
  }
  printf("%.3f %sB\n", v, unit[i]);
}
{sum+=$5}
END{pp()}'

例:

$ ds ~        
72.891 GiB

du あると仮定します GNU coreutils から、このコマンドは、ファイル数に任意の制限なしで、ディレクトリ内の任意の数の通常のファイルの見かけの合計サイズを計算する必要があります:

find . -type f -print0 | du -scb --files0-from=- | tail -n 1

-l を追加します du へのオプション 内部にハードリンクされたファイルがいくつかあり、各ハードリンクを個別にカウントしたい場合 (デフォルトでは du 複数のハードリンクを 1 回だけカウントします)。

プレーンな du -sb との最も重要な違い それは再帰的な du です また、異なるファイルシステムによって異なる方法で報告されるディレクトリのサイズもカウントします。これを避けるために、find コマンドは、通常のファイルのみを du に渡すために使用されます .もう 1 つの違いは、シンボリック リンクが無視されることです (カウントする必要がある場合、find コマンドを調整する必要があります)。

このコマンドは、通常の du -sb よりも多くのメモリを消費します。 、 --files0-from=FILE を使用しているため du になります すべてのデバイス番号と inode 番号を保存 これは、複数のハード リンクを持つファイルのみを記憶するというデフォルトの動作とは対照的です。 (-l オプションは、ハードリンクを複数回カウントするために使用されます。これは、デバイス番号と inode 番号を保存する唯一の理由は、既に処理されたハードリンク ファイルをスキップすることだからです。)

合計サイズの人間が読める表現を取得したい場合は、 -h を追加するだけです オプション (これは du のため機能します) 他の推奨される回答とは異なり、一度だけ呼び出され、合計サイズ自体を計算します):

find . -type f -print0 | du -scbh --files0-from=- | tail -n 1

または (-b の影響が心配な場合 その後、-h によってオーバーライドされます )

find . -type f -print0 | du -sc --apparent-size -h --files0-from=- | tail -n 1

Linux
  1. Linuxでディレクトリサイズを取得する方法

  2. Linux でディレクトリの空きディスク領域をプログラムで取得する方法

  3. 特定のサイズを超えるファイルをすべて取得して削除する方法

  1. Pythonで(MB)ファイルのtar.gzのサイズを取得する方法

  2. bashでファイルの絶対ディレクトリを取得するにはどうすればよいですか?

  3. Linuxでファイルの物理サイズを取得するには?

  1. コマンドラインを使用してディレクトリ内のファイルの数を取得するにはどうすればよいですか?

  2. 自分のディレクトリにR3.3.1をインストールする方法は?

  3. Linux –ツリーとディレクトリサイズを組み合わせる方法は?