Linuxでは、ファイルのサイズを知るのは簡単です。 lsコマンドで-lおよび-hオプションを使用するだけで、ファイルのアクセス許可とタイムスタンプとともにファイルサイズが表示されます。出力例は次のとおりです:
ls -lh tutorials
total 56K
-rwxr--r-- 1 abhishek abhishek 456 Mar 6 16:21 agatha.txt
-rw-r--r-- 1 abhishek abhishek 0 Apr 16 19:53 a.t
-rwxr--r-- 1 abhishek abhishek 140 Mar 22 16:41 bash_script.sh
-rw-rw-r-- 1 abhishek abhishek 95 Feb 11 13:12 cpluplus.cpp
-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 prog.py
-rw-r--r-- 1 abhishek abhishek 19K Mar 18 18:46 services
-rw-r--r-- 1 abhishek abhishek 356 Dec 11 21:35 sherlock.txt
-rwxrw-r-- 1 abhishek abhishek 72 Jan 21 15:44 sleep.sh
drwxr-xr-x 3 abhishek abhishek 4.0K Jan 4 20:10 target
drwxr-xr-x 2 abhishek abhishek 4.0K Apr 16 18:27 test_dir
-rw-rw-r-- 1 abhishek abhishek 55 Mar 11 16:28 text-file.txt
あなたは何か奇妙なことに気付くでしょう。 lsコマンドは、すべてのディレクトリのサイズを4KBとして表示します。それは正しくありえませんね。もちろん違います。
Linuxのフォルダまたはディレクトリのサイズは、duコマンドを使用して確認できます。ここでのduは、ディスク使用量を表します。このチュートリアルの後半で、ディレクトリの4.0Kサイズの背後にあるロジックについて説明します。とりあえず、ディレクトリサイズの取得に焦点を当てましょう。
Linuxでディレクトリサイズを確認する場合は、次のコマンドを使用できます:
du -sh path_to_directory
これにより、上記のディレクトリの合計サイズが人間が読める形式(KB、MB、GB)で表示されます。
duコマンドを使用してLinuxでディレクトリサイズを取得する
ディレクトリサイズとディスク使用率を確認するために使用できるduコマンドのさまざまな例を紹介します。
duコマンドの構文は非常に単純です。
du [option] path_to_file_or_directory
Linuxでduコマンドを使用してファイルとディレクトリのサイズ情報を取得する方法を見てみましょう。
このチュートリアルで使用する「tutorials」ディレクトリの構造は次のとおりです。
tree tutorials
.
├── agatha.txt
├── bash_script.sh
├── cpluplus.cpp
├── prog.py
├── services
├── sherlock.txt
├── sleep.sh
├── target
│ ├── agatha.txt
│ ├── file1.txt
│ └── past
│ ├── file1.txt
│ ├── file2.txt
│ └── source1
│ └── source2
│ └── file1.txt
├── test_dir
│ ├── c.xyz
│ ├── myzip1.zip
│ └── myzip2.zip
└── text-file.txt
5 directories, 16 files
ここで、「tutorials」ディレクトリでduコマンドを実行すると、すべてのサブディレクトリのサイズが表示され、その下部にあるすべてのサブディレクトリとファイルのサイズが合計されます。
du tutorials
これは、チュートリアルディレクトリの出力です。
8 tutorials/target/past/source1/source2
12 tutorials/target/past/source1
24 tutorials/target/past
36 tutorials/target
12 tutorials/test_dir
100 tutorials
上記のduコマンドの出力の問題は、100が100KBなのか100MBなのか100GBなのかわからないことです。心配しないでください。この動作を変更して、オプション-hを使用してディレクトリサイズを人間が読める形式で表示できます。
du -h tutorials
これで、出力がはるかに読みやすくなりました。
8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
36K tutorials/target
12K tutorials/test_dir
100K tutorials
-hの代わりに、MBには-mオプションを使用し、KBには-kオプションを使用できます。ただし、サイズが1 MB未満の場合でも、常に1MBとして表示されます。これが、-hオプションの使用が常に優れたオプションである理由です。
チュートリアルディレクトリにいくつかのファイルがありますが、それらはduコマンド出力に表示されないことに気づきましたか?これは、ファイルサイズはディレクトリサイズの合計にカウントされますが、デフォルトではファイルが表示されないためです。
ディレクトリとともにファイルのサイズを表示するには、-aオプションを使用できます。これを-hオプションと組み合わせて、人間が読める形式でサイズを取得するとよいでしょう。
du -ah tutorials
これで、出力にディレクトリとともにファイルが表示されます。
4.0K tutorials/cpluplus.cpp
4.0K tutorials/prog.py
20K tutorials/services
4.0K tutorials/text-file.txt
4.0K tutorials/bash_script.sh
4.0K tutorials/target/file1.txt
4.0K tutorials/target/past/file2.txt
4.0K tutorials/target/past/file1.txt
4.0K tutorials/target/past/source1/source2/file1.txt
8.0K tutorials/target/past/source1/source2
12K tutorials/target/past/source1
24K tutorials/target/past
4.0K tutorials/target/agatha.txt
36K tutorials/target
4.0K tutorials/sherlock.txt
4.0K tutorials/test_dir/myzip1.zip
4.0K tutorials/test_dir/myzip2.zip
0 tutorials/test_dir/c.xyz
12K tutorials/test_dir
4.0K tutorials/sleep.sh
4.0K tutorials/agatha.txt
100K tutorials
ボーナスのヒント:4KBの謎を解く
サイズは四捨五入されているように見える場合がありますのでご注意ください。つまり、すべてのサイズが4Kの倍数になっているということです。実際、空のファイルを除いて、すべてのファイルのサイズは少なくとも4KBです。それは偶然ですか?そうではありません。
ファイルのテキストがバイト単位であっても、ファイルシステムの最小ブロックサイズであるため、最小ファイルサイズは4Kです。ファイル上のテキストのサイズに関係なく、ディスク上の4KBメモリの少なくとも1つのブロックが割り当てられます。
また、メモリブロックのサイズは4KBであるため、表示されるサイズは常に4KBの倍数になります。
これで、UNIX/Linuxではすべてがファイルであることをすでにご存知でしょう。ディレクトリは基本的に、「含まれている」すべてのファイルのすべての場所に関する情報を含むファイルです。
したがって、lsコマンドを使用すると、ディレクトリがファイルとして扱われ、1メモリブロックであるサイズが表示されるため、表示されるサイズは4KBになります。
Linuxのディレクトリの合計サイズのみを表示
duコマンドの出力が冗長すぎて、人間が読める形式でディレクトリの合計サイズだけを表示したい場合は、sumオプション-sを使用できます。
du -sh tutorials
これで、出力はディレクトリの合計サイズを示す1行になります。
100K tutorials
一度に1つのディレクトリのみのサイズをチェックするように制限されているわけではありません。 duコマンドで複数のディレクトリを指定できます。
たとえば、ここでは-shオプションを使用して、2つのディレクトリの合計サイズを表示します。
du -sh tutorials/target/ tutorials/test_dir
出力には、両方のディレクトリのサイズが個別に表示されます:
36K tutorials/target/
12K tutorials/test_dir
上記の例では、両方のディレクトリの合計サイズを個別に確認しました。オプション-cを使用して、出力内のすべてのディレクトリの合計の総計を表示できます。
du -csh tutorials/target/ tutorials/test_dir
出力からわかるように、サイズが合計され、総計が得られます。
36K tutorials/target/
12K tutorials/test_dir
48K total
現在のフォルダ内のすべてのディレクトリのサイズを確認したい場合はどうなりますか?デフォルトでは、duコマンドはすべてのディレクトリのサブディレクトリに移動し、ネストされたディレクトリが多すぎると、特に出力を把握するのが難しくなります。
できることは、サブディレクトリのサイズを表示しながらチェックする深度レベルを定義することです。
したがって、現在のフォルダ内のディレクトリのサイズを確認したい場合は、次のように深さを1に設定できます。
du -h --max-depth=1 tutorials
これで、出力には現在のディレクトリ内のサブディレクトリのみが表示されます。これ以上進むことはありません。
36K tutorials/target
12K tutorials/test_dir
100K tutorials
–max-depthを思い出せない場合は、その短い形式の-dフラグを使用できます:
du -h -d1 tutorials
duコマンドは、特定のタイプのファイルを除外するオプションを提供します。 –excludeオプションと一緒に正規表現を使用できます。
たとえば、拡張子がtxtのファイルを除くすべてのファイルの合計を計算するには、次のコマンドを使用できます。
du -h --exclude="*.txt" tutorials
そして、出力が表示された場合、ディレクトリの合計サイズは縮小されているはずです。
4.0K tutorials/target/past/source1/source2
8.0K tutorials/target/past/source1
12K tutorials/target/past
16K tutorials/target
12K tutorials/test_dir
68K tutorials
ボーナスのヒント:最大のサブディレクトリを見つける
duコマンドの出力をsortコマンドと組み合わせて、ディレクトリをサイズ順に並べ替えることができます。
du -h --max-depth=1 tutorials | sort -rh
これにより、ディレクトリがサイズの逆の順序で表示されます。つまり、一番上の最大のディレクトリです。
100K tutorials
36K tutorials/target
12K tutorials/test_dir
もちろん、一番上のディレクトリはディレクトリ自体ですが、2番目のディレクトリは最大のサブディレクトリになります。
さらに、headコマンドまたはtailコマンドと組み合わせて、x個の最大のファイルまたは最小のファイル/ディレクトリを取得できます。
役に立ちましたか?
Linuxでのduコマンドの基本的な使用法をすべて説明しようとしました。ただし、いつものように、コマンドのマニュアルページにはさらに多くのオプションがあります。 Linuxのディレクトリのサイズを知りたいだけの場合は、このチュートリアルで十分な情報が得られるはずです。 Linuxでディスク容量を確認する場合は、dfコマンドを使用します。
チュートリアルは気に入りましたか?それはあなたを助けましたか?コメントで教えてください。 du commandに関する他のクールなヒントがある場合は、それを私たちと共有してみませんか?