Pertanyaan ini sudah ada jawabannya di sini:
Perintah apa yang saya gunakan untuk menemukan ukuran semua file (secara rekursif) di direktori Linux atau Mac OS X?
linux
macos
mac
command-line
Daryl Spitzer
sumber
sumber
-k
opsi untuk menggunakan ukuran blok 1K-bytedu
, saya menggunakanncdu
, Anda dapat menemukan referensi di sini, remysharp.com/2018/08/23/cli-improvedJawaban:
Versi BSD yang
du
digunakan dalam OS X melaporkan ukuran dengan blok 512-byte - ukurannya pada dasarnya dibulatkan ke nilai 512-byte berikutnya. Ini memberi tahu Anda ruang pada disk, yang lebih besar dari jumlah data. Jika Anda memiliki banyak file kecil, perbedaannya bisa besar.Ini sebuah contoh.
Ini adalah nilai dengan reguler
du
. Ada dalam blok 512-byte:The
-h
Hasil bendera di sejumlah lebih mudah dibaca, dalam kilobyte. Seperti yang diharapkan, itu setengah dari jumlah blok 512-byte:Akhirnya, Anda dapat menggunakan
find
danawk
memberi Anda jumlah byte aktual dalam file. Ini agak lambat, tetapi berhasil:Nilai ini sama persis dengan angka yang dilaporkan oleh jendela Find Info Get. (Tidak ada fork atau xattr aneh dalam set file ini.) Secara signifikan lebih kecil dari nilai yang dilaporkan oleh
du
.Begini cara kerjanya: ia mendapat daftar semua file, dan meneruskannya ke
ls -l
; kemudianawk
digunakan untuk menghitung byte. The-type f
bendera ada sehingga hanya file (dan tidak direktori) dikirim kels
. Tanpa tanda itu, itu juga akan mengirim nama direktorils
, dan setiap file akan terdaftar dua kali: sekali sebagai file individual, dan sekali sebagai item dalam direktori.Versi GNU dari
du
dapat memberikan nilai dalam byte aktual, bukan blok. Sangat disayangkan bahwa versi BSDdu
tidak fleksibel.sumber
du
dari GNU coreutils dengan-b
opsi saya mendapatkan hasil yang berbeda daripada denganfind
pipa Anda . Untuk direktori 36 GB saya mendapatkan perbedaan 82 KB.Tampilkan ukuran satu file
du -h path_to_a_file
Tampilkan ukuran isi direktori, setiap sub-direktori, dan masing-masing file individual:
du -h path_to_a_directory
Tampilkan ukuran isi direktori:
du -sh path_to_a_directory
sumber
du -sch
jika Anda menginginkan sesuatu yang lebih mudah dibaca.Du - memberitahu penggunaan disk bukan ukuran file .
kode terminal di atas (im pada osx 10.6) menawarkan bagi saya hasil terbaik dan lebih cepat daripada "find ... -exec"
patokan cepat
sumber
find . -type f -print0 | xargs -0 stat -c%s | awk '{b+=$1} END {print b}'
Anda dapat menggunakan
du -ah .
yang menampilkan ukuran semua file dan direktori secara rekursif.Ini dapat digabungkan dengan
sort
, sehingga Anda akan melihat 20 direktori terbesar di folder saat ini:Catatan: Opsi
-h
untuksort
tidak tersedia di OSX / BSD, jadi Anda harus menginstalsort
daricoreutils
(misalnya melaluibrew
) dan menerapkan path bin kePATH
, misalnyaKalau tidak gunakan:
sumber
brew install coreutils
jika tidak gunakan perintah sort BSD di akhir tanpa-h
.Saya menggabungkan semua persetujuan Anda dan menggabungkannya dengan keluaran yang dapat dibaca manusia, hasilnya adalah:
Tautan ke intinya: https://gist.github.com/mlegenhausen/9365461
sumber