ls -l
akan memberi Anda ukuran file yang jelas, yang merupakan jumlah byte yang akan dibaca oleh program jika membaca file dari awal hingga selesai. du
akan memberi Anda ukuran file "on disk".
Secara default, du
memberi Anda ukuran file dalam jumlah blok disk, tetapi Anda dapat menggunakan -h
untuk mendapatkan unit yang dapat dibaca manusia sebagai gantinya. Lihat juga manual untuk du
di sistem Anda.
Perhatikan bahwa dengan du
GNU coreutil (yang mungkin Anda miliki di Linux), -b
untuk mendapatkan byte menyiratkan --apparent-size
pilihan. Ini bukan yang ingin Anda gunakan untuk mendapatkan jumlah byte yang sebenarnya digunakan pada disk. Sebagai gantinya, gunakan --block-size=1
atau -B 1
.
Dengan GNU ls
, Anda juga dapat melakukan ls -s --block-size=1
pada file. Ini akan memberikan nomor yang sama dengan du -B 1
untuk file.
Contoh:
$ ls -l file
-rw-r--r-- 1 myself wheel 536870912 Apr 8 11:44 file
$ ls -lh file
-rw-r--r-- 1 myself wheel 512M Apr 8 11:44 file
$ du -h file
24K file
$ du -B 1 file
24576 file
$ ls -s --block-size=1 file
24576 file
Artinya, ini adalah file 512 MB yang membutuhkan sekitar 24 KB pada disk. Ini adalah jarang file (kebanyakan nol yang sebenarnya tidak ditulis ke disk tetapi direpresentasikan sebagai "lubang" logis dalam file). File jarang biasa terjadi saat bekerja dengan file besar yang telah dialokasikan sebelumnya, mis. gambar disk untuk mesin virtual atau menukar file, dll. Membuat file renggang itu cepat, sedangkan mengisinya dengan nol itu lambat (dan tidak perlu).
Lihat juga manual untuk fallocate
di sistem Linux Anda.
Saya mendapatkan ukuran file dalam byte seperti ini:
actualsize=$(du -b "${file}" | cut -f 1)