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

How Get Size Directory Linux



Linuxのディレクトリのサイズを知ることは、思ったほど簡単ではありません。 ls -sコマンドは、ファイルとサブディレクトリをそれらのサイズとともに一覧表示します。ただし、ディレクトリに指定されているサイズ(約4096バイト)はディスク使用量ではありません。ディレクトリに表示されるサイズは、ディレクトリのメタデータのサイズです。

メタデータはデータに関するデータです。見かけのサイズは、コンピューターの通常のユーザーにとって重要なデータのサイズです。ユーザーの文字、画像、動画などのコンテンツ(テキスト)が見かけのサイズを構成します。このデータは、コンピューターに任意に保持されることはありません。見かけのサイズのデータ​​は、管理された方法で保持する必要があります。識別可能でなければなりません。完全である必要があります。それには他の要件があります。これらの追加要件を達成するには、いくつかの追加データが必要です。この追加データはメタデータです。







ボリュームにはディレクトリが1つしかないことを忘れないでください。残りはサブディレクトリです。ルートディレクトリはサブディレクトリを生成し、サブディレクトリは他のサブディレクトリをダウンさせます。ただし、サブディレクトリは通常、単にディレクトリと呼ばれます。したがって、ディレクトリツリーは1つだけです。



したがって、ls -sは、ディレクトリのサイズを取得するのに役立ちません。では、どのコマンドが役に立ちますか? –duコマンド。 duはDiskUsageの略です。ディレクトリのディスク使用量を出力します。



この記事では、Linuxのduコマンドのさまざまな機能について説明します。これにより、ディレクトリとそのサブディレクトリのサイズを知るためのさまざまなプログラマーの方法が提供されます。 Bashは、この記事のコードサンプルに使用されるシェルです。





記事の内容

オプションまたは引数なしのdu

現在の作業ディレクトリは、ユーザーが現在作業しているディレクトリです。通常、プロンプトには現在の作業ディレクトリが表示されます。次のように、オプションと引数なしでduと入力します。



次にEnterキーを押すと、現在の作業ディレクトリのすべてのサブディレクトリのディスク使用量が表示されます。現在の作業ディレクトリのサブツリーに関するこの情報が表示されます。ディスプレイのドットは、現在の作業ディレクトリを表します。

サブツリーの各パスは、ディスプレイに1行で表示されます。各行は、ディレクトリのサイズ(パスの最後の名前)で始まります。表示は次のようになります。

8/dir1/dir2/dir3/dir4

12/dir1/dir2/dir3

16/dir1/dir2

20/dir1

サイズがバイト単位かキロバイト単位かメガバイト単位かギガバイト単位かが明確でないことに注意してください。キロバイトの記号、Kは1024バイトを意味します。メガバイトのシンボル、Mは1,048,576バイトを意味します。ギガバイトの記号、Gは1,073,741,824バイトを意味します。倍数を表示するには、次のように-hオプション(スイッチ)を使用する必要があります。

-NS

表示は次のようになります。

8.0K。/dir1/dir2/dir3/dir4

12K。/dir1/dir2/dir3

16K。/dir1/dir2

20K。/dir1

-hオプションを使用すると、サイズは読み取り可能な形式であると言われます。

注:–allオプションを使用すると、duコマンドはファイルのディスク使用量も示します。ただし、この記事では、ファイルのディスク使用量については説明しません。

他のディレクトリのサイズ

Linuxボリュームの一般的な絶対パスは次のとおりです。

//ジョン/いう/dirTwo/dirThree/dirFour

最初の/はルートディレクトリです。このディレクトリには、ホームディレクトリを含む直接のサブディレクトリがあります。ホームディレクトリには、ユーザーのディレクトリがあります。ユーザーの名前がJohnの場合、ユーザーのディレクトリにjohnという名前を付けることができます。ユーザーのディレクトリは〜で識別されます。したがって、ユーザーはコマンドcd〜を使用して、任意のディレクトリから自分のディレクトリにアクセスできます。 dirOneは、ユーザーが作成したディレクトリです。ユーザーは、このレベルで他のディレクトリを作成することもできます。 dirTwo、dirThree、およびdirFourは、ユーザーが作成した以前のディレクトリのサブディレクトリです。

ユーザーは、引数として絶対パスをバイパスして、任意のディレクトリから他のディレクトリとそのサブディレクトリ(サブツリー)のサイズを知ることができます。たとえば、ディスク使用量が必要な場合、

//ジョン/いう/dirTwo

その場合、コマンドは次のようになります。

-NS //ジョン/いう/dirTwo

また

-NS/いう/dirTwo

ここで、〜はユーザーのディレクトリを表します。

相対パスを使用するには、ユーザーはすでに対応する親ディレクトリにいる必要があります。たとえば、プロンプトが表示されている場合、

ジョン@ホスト:〜/$と言う

ユーザーがディレクトリ/ home / john / dirOneにいることを意味する場合、次のコマンドは上記のコマンドと同じ結果になります。

-NSdirTwo

パスはまだ相対的です。現在のディレクトリに同じ情報を表示するには、引数を使用しないか、ドットを使用します。

このスキームを使用して、パスの最後(パスの前)にある1つのディレクトリのみのサイズを取得できます。パスの途中でディレクトリのサイズを取得することは可能です–以下のexclude = PATTERNを参照してください。

総計

関連するすべてのディレクトリの総計サイズを作成できます。上記の状況の場合、コマンドは次のようになります。

-NS - 合計

見かけのサイズ

見かけのサイズは通常、ディスク使用量よりも小さくなります。ただし、状況によっては、見かけのサイズがディスク使用量よりも大きくなります。理由–後で参照してください。上記の相対パスの見かけのサイズを取得するコマンドは次のようになります。

-NS -見かけのサイズdirTwo

最大深度

–max-depth = 0の場合、duは現在の作業ディレクトリのみのサイズを出力します。 du –max-depth = 1の場合、duは現在の作業ディレクトリのサイズとそのすべての第1レベルのサブディレクトリのサイズを出力します。 –max-depth = 2の場合、duは、現在の作業ディレクトリのサイズと、そのすべての第1レベルのサブディレクトリ、およびすべての第2レベルのサブディレクトリのサイズを出力します。 –max-depth = 3の場合、duは、現在の作業ディレクトリとそのすべての第1レベルのサブディレクトリ、すべての第2レベルのサブディレクトリ、およびすべての第3レベルのサブディレクトリのサイズを出力します。これは、max-depthの値を増やしながら継続します。その使用例は次のとおりです。

-NS --max-depth=2

sudoコマンド

ルートディレクトリに独自のサブディレクトリを持つディレクトリの1つはvarです。ユーザーが入力した場合

-NS /どこ

Enterキーを押すと、一部のディレクトリのアクセス許可が拒否されていることがわかります。つまり、彼はいくつかのディレクトリのサイズを知ることができません。ユーザーがスーパーユーザーではないため、アクセス許可は拒否されます。スーパーユーザーには、これらのディレクトリのサイズ(ディスク使用量)を確認する権限があります。したがって、ユーザーがその特権を取得するには、次のようにsudoコマンドを使用する必要があります。

sudo -NS /どこ

シェルがユーザーにパスワードを要求した場合、ユーザーはパスワードを入力してEnterキーを押す必要があります。 sudoコマンドを使用すると、通常のユーザー(プログラマー)は、varディレクトリおよび同様のディレクトリ内のすべてのディレクトリのサイズを確認できます。

サイズによるエントリの除外

–threshold = SIZEオプションでは、サイズがSIZE未満のディレクトリーをリストすることはできません。パスについては、

//ジョン/いう/dirTwo/dirThree/dirFour

でプロンプトを表示します[メール保護]:〜$、次に

-NS - しきい値= 12K dirOne

ここで、12Kは12キロバイトを意味し、ディスク使用量が12K未満のディレクトリの行は表示されません。

–exclude = PATTERN

このオプションと値は、ユーザーがリストに含めたくないディレクトリ行を省略できます。

最後のディレクトリの行を省略するには、パスのdirFour

//ジョン/いう/dirTwo/dirThree/dirFour

コマンドは次のようになります。

-NS -除外する=言う/dirTwo/dirThree/dirFour dirOne

結果は次のようになります。

4.0K dirOne/dirTwo/dirThree

8.0K dirOne/dirTwo

12K dirOne

注:サイズには、パスの最後のレベルのディレクトリー(dirFour)のサイズは含まれていません。

上位の深さのディレクトリとそのサブツリーのサイズのみを使用するには、オプションに下位の深さのディレクトリを含めないでください。したがって、コマンドを使用すると、

-NS -除外する=言う/dirTwo/dirThree dirOne

出力は次のようになります。

4.0K dirOne/dirTwo

8K dirOne

注:サイズには、ツリーの下部レバーディレクトリのサイズは含まれていません。

もう一度考えてみてください、絶対リンク、

//ジョン/いう/dirTwo/dirThree/dirFour

次のコマンドは、パス内のディレクトリであるdirTwoディレクトリのみのディスク使用量を取得します。コマンドは次のとおりです。

-NS -除外する=//ジョン/いう/dirTwo/ * //ジョン/いう/dirTwo

引数には、問題のディレクトリまでの先行するすべてのディレクトリがあります。除外の値には、問題のディレクトリの直後に、*で終わる先行するすべてのディレクトリがあります。 *は、そのレベルのすべてのサブディレクトリ(およびそれらのサブツリー)を意味します。結果は次のようになります。

5.0K//ジョン/いう/dirTwo

結論

ls-sコマンドを使用してディレクトリのサイズを把握しようとすると誤解を招く恐れがあります。これにより、ディレクトリのメタデータのみが取得されます。ディレクトリのディスク使用量を知るには、duコマンドを使用する必要があります。 -hオプションと一緒に使用すると、ディレクトリのサイズが読み取り可能になります。見かけのサイズは、見かけのサイズオプションを使用して取得できます。オプションと引数がない場合、duコマンドは、現在のディレクトリのサイズを含む、現在のディレクトリのすべてのサブディレクトリのサイズを表示するだけです。 duへの引数はパスであり、ルートから開始できます。オプションとその値のいくつかは、アドレス指定されるディレクトリを正確に決定します。 sudoコマンドは、デフォルトで通常のユーザーにスーパーユーザー特権を与えます。