ls -l コマンド出力の合計

ls -l コマンド出力の合計

1K私は合計が私が作業しているディレクトリ内のファイルが使用しているブロックの数を知らせていることを知っています。ある目的で、私はこれを人間が読める形式で表示するためにコマンドを入力し、ls -lhディレクトリ内のすべてのファイルのブロックサイズを見ましたが、驚くべきことに、ディレクトリ内のすべてのファイルのブロックサイズを追加したとき、彼らはtotal何と同じではありませんでした。出力の最初の行に表示されます。だから私の質問は、この2つのサイズの違いの背後に隠れた理由は何ですか?

ベストアンサー1

ls -l有無にかかわらず、-hディスクスペース使用量ではなく、各ファイルの(見かけの)サイズのみが表示されます。

ディスク容量の使用量を表示するには、を使用しますls -s。これで合計が一致するはずです。

この合計は、リストされたファイルの合計です。隠しファイルは、使用しない限り-A含まれません。-a.およびを使用する場合..(通常)も含まれます。同じファイルがリストに2回表示される場合(たとえば、同じファイルへのハードリンクであるため)、そのファイルは2回カウントされます。

POSIX準拠の実装では、サイズは512バイト単位です。 GNU(Ubuntuに付属)は、環境に変数(またはこのオプションを使用して任意の単位を指定することもできます)がない場合は、1024バイト単位をls使用します。 busyboxは常に1024バイト単位を使用します。POSIXLY_CORRECT$LS_BLOCK_SIZE$BLOCKSIZE--block-sizels

例:

$ truncate -s 15T a
$ echo > b
$ ls -s
total 4
0 a  4 b
$ ls -sl
total 4
0 -rw-rw-r-- 1 me me 16492674416640 Oct  4 21:53 a
4 -rw-rw-r-- 1 me me              1 Oct  4 21:53 b
$ POSIXLY_CORRECT=1 ls -sl
total 8
0 -rw-rw-r-- 1 me me 16492674416640 Oct  4 21:53 a
8 -rw-rw-r-- 1 me me              1 Oct  4 21:53 b
$ LS_BLOCK_SIZE=1 ls -sl
total 4096
   0 -rw-rw-r-- 1 me me 16492674416640 Oct  4 21:53 a
4096 -rw-rw-r-- 1 me me              1 Oct  4 21:53 b
$ LS_BLOCK_SIZE=1 ls -sla
total 1638400
   4096 drwxrwxr-x   2 me me           4096 Oct  4 21:53 ./
1630208 drwxr-xr-x 312 me me        1626112 Oct  4 21:54 ../
      0 -rw-rw-r--   1 me me 16492674416640 Oct  4 21:53 a
   4096 -rw-rw-r--   1 me me              1 Oct  4 21:53 b
$ ls -slah
total 1.6M
4.0K drwxrwxr-x   2 me me 4.0K Oct  4 21:53 ./
1.6M drwxr-xr-x 312 me me 1.6M Oct  4 21:55 ../
   0 -rw-rw-r--   1 me me  15T Oct  4 21:53 a
4.0K -rw-rw-r--   1 me me    1 Oct  4 21:53 b

15TiBは大きいaがディスク領域を占有せず(希少ファイル)、b1バイトは大きいがディスクから4KiBを占有します(ファイルシステムブロックを1つ使用)。

バラよりディスク使用量を測定する方法はなぜそんなに変わりますか?さらなる読書のため。

おすすめ記事