Saya perlu mendapatkan ukuran direktori di terminal untuk tujuan penandatanganan. Saya menggunakan perintah berikut:
du -s /path/to/dir
Saya mengalikan hasilnya dengan ukuran blok UNIX tradisional (512 byte) dan mendapatkan ukuran direktori aktual dalam byte. Namun, jendela dialog "Get Info" dari Finder menunjukkan ukurannya sedikit lebih kecil daripada yang dihitung dengan perintah terminal. Dan tampaknya itu dapat direproduksi pada folder / bundel apa pun. Apa yang saya lewatkan?
sumber
actual
atauapparent
. (Juga lihat penjelasan saya yang diperbarui).Tentang Mac OS X dan Finder (di Snow Leopard, versi 10.6.8) Saya perhatikan berikut ini.
bash
(1)) di bawah ini.Sejauh ini saya telah melihat angka 'terkuantifikasi' saya sama dengan angka 'terkuantifikasi' dalam Finder .
BLOCKSIZE
ditetapkan di shell saya tapi saya diuji (sekarang, sedikit) baik versi dan nilai default untuk$BLOCKSIZE
memberikan nilai yang sama.Satu-satunya hal yang bisa saya katakan adalah bahwa saya semakin dekat dengan hanya menghitung file (dengan demikian tidak termasuk direktori ~ 'file-system meta index / header' ~ data) dan yang paling dekat saya dapatkan adalah dengan yang berikut.
du
(1) maupun (gnu)gdu
(1) tampaknya menghitung atribut yang diperluas (xattr
)Dan kemudian aku harus menghukum 'Jalankan jalan dan lakukan matematika'
Damai dan selamat malam untuk kali ini.
sumber
Pada sistem Ubuntu saya, menggunakan ext4,
du -b file
memberikan ukuran dalam byte file yang sebenarnya, dandu -b dir
memberikan ukuran dalam byte file (s) + overhead direktori, overhead, dalam kasus saya, kelipatan 4096 byte ..Overhead ini meningkat seiring dengan meningkatnya jumlah file.
Catatan: walaupun file dihapus, overhead direktori tetap berada pada level yang lebih tinggi sebelum flle dihapus ..
Saya belum mencoba me-reboot, untuk melihat apakah itu kembali, tetapi dalam kedua kasus, ini berarti bahwa ukuran direktori bervariasi tergantung pada keadaan historis.
Menghitung setiap ukuran file mungkin merupakan opsi terbaik untuk nilai akurat dari total ukuran file .
Script berikut total semua ukuran file (dalam byte) ..
Untuk OS X, jika Anda tidak memiliki
-b
opton untuk 'du', Anda dapat menggunakannyastat
sebagai gantinya. (Jika Anda memilikinya:) ... Baris komentar menunjukkanstat
alternatif Ubuntu untukdu -b
;sumber
du -b
dan berbedastat
. Skrip Anda juga tidak portabel di luar Linux.coreutils
untuk mendapatkan versi GNUdu
sebagaigdu
. Jadi ini tidak sepenuhnya portabel, tetapi mungkin berguna bagi orang-orang di OS X untuk mendapatkan versi GNU dari beberapa utilitas inti.Jumlah semua file dalam direktori:
OSX:
find dir ! -type d -print0 | xargs -0 stat -f '%z' | awk '{sum += $1} END{print sum}'
Linux:
find dir ! -type d -printf "%s\n" | awk '{sum += $1} END{print sum}'
sumber
find: unrecognized: -printf
. Gambar Alpine