ls -lとdu-shのファイルサイズの違いは何ですか?

ls -lとdu-shのファイルサイズの違いは何ですか?

私は何年も私を悩ませてきた最も謎のような質問があります。 ls -lとdu -sh *で指定されたファイルサイズの違いは何ですか?

GRILL:/user/MAIL/DATA>ll
total 270
drwxr-xr-x  11 user     users         1024 Mar 21  2013 .
drwxr-xr-x   6 user     users           96 May 28  2008 ..
drwxr-xr-x  10 user     users         1024 Jun 14 09:40 Rod
drwxr-xr-x   3 user     users           96 Sep 17  2010 Atlas
drwxr-xr-x  2339 user     users       132096 Jun 14 15:00 Admin    
drwxr-xr-x   3 user     users           96 Jul 11  2014 DE
drwxr-xr-x   5 user     users           96 Jun 14 08:30 Express
drwxr-xr-x   3 user     users           96 Sep 17  2010 Deferred
drwxr-xr-x   2 user     users           96 Feb 10  2009 Imagi
drwxr-xr-x   6 user     users         1024 Jul 11  2014 NO
drwxr-xr-x   3 user     users         2048 Mar 21  2013 SE
-rw-r--r--   1 user     users           55 Mar 21  2013 cmd

GRILL:/user/MAIL/DATA>du -sk *
6723    Rod
0       Atlas
435494  Admin
2       DE
111273  Express
2       Deferred
0       Imagi
541     NO
12      SE
1       cmd

Adminのサイズls -lはです132096。 Adminディレクトリから400,000を超えるファイルを削除しようとしましたが、スペースが少し減ったことがわかりませんでした。

そしてdu -sk与えられたサイズは435494。ファイルの元のサイズは何であり、その違いは何ですか?誰かがこれについて詳しく説明してもらえますか?

ベストアンサー1

ファイルの場合、何よりもls -l fileサイズをバイト単位で表示し、ディスクが占めるスペースを1kB = 1024バイト単位で表示します。ディスク容量はブロック単位で割り当てられているため、表示サイズは常に表示スペースよりわずかに大きい(1kB単位と同じ)。filedu -k filefiledu -kls -klls -l

ディレクトリの場合のls -ld dirファイルとサブディレクトリのファイル名のリスト(および多くの属性)のサイズを表示しますdir。これはファイル名のリストにすぎず、ファイルやサブディレクトリの内容ではありません。したがって、ファイルを追加するとサイズが大きくなりますdirが(ファイルが空であっても)、ファイルの1つが大きくなるとサイズは変わりませんdir

dirただし、リスト内のスペースからファイルを削除するとすぐに回収されませんが、削除されたファイルのエントリは未使用とマークされてから回収されます(実際には実装によって異なりますが、私が説明したものとほぼ同じです)。これがls -ldファイルを削除すると、はるかに後で出力に変更が表示されない可能性がある理由です。

最後に、ディスク上のすべてのファイルとすべてのサブディレクトリ(予想)が占める表示スペースはdu -ks dir1kB = 1024バイトです。上記の説明を考慮すると、これは出力とは関係ありません。dirdirls -kld dir

おすすめ記事