はじめに
duコマンドでサブディレクトリを含めたディレクトリ容量を表示する。という記事を書いた際に、
du -S
とdu
の表示の差異が気になったのでまとめています。
結論
-
-S
はサブディレクトを含めない、ファイルの容量をディレクトごとに表示する。 - ディレクトそれぞれの使用量が知りたいのであれば
-S
オプションを付ける。 - ディレクトの合計使用量が知りたいのであれば、
-S
は付けない。
-Sオプションとは
man
コマンドで調べると以下のように表示されます。
直訳すると、ディレクトリに対して、サブディレクトリの容量を含めず表示する。 となります。
-S, --separate-dirs
for directories do not include size of subdirectories
実行例
4行目がを見るとbase
ディレクトがdu
の結果35M、du -S
結果6.0Mとなっています。
2,3行目、サブディレクトのbase/gen
は29M,/base/packages
は0で、同じ結果です。
du -S
の結果であるbase(6.0M) + base/gen(29M) は du
の結果であるbase(35M)となります。
ではdu -S
の結果であるbase(6.0M)は何を指しているのか、baseディレクト配下のファイルのみ一覧で表示します。
[root@-new base]# find ./ -maxdepth 1 -type f -exec du -sh {} \;
4.0K ./mirrorlist.txt
4.0K ./repomd.xml
0 ./cachecookie
160K ./9346184be1deb727caf4b1ecf4a7949155da5da74af9b92c172687b290a773df-c7-x86_64-comps.xml.gz
5.8M ./0c34273ad0292747ee5e15c047d3e51c67ca59861a446972db45d71abacc7ad7-primary.sqlite.bz2
base配下のファイルの合計は約6Mであることが分かり、du -S
のbaseに対する容量表示とほぼ同様になります。