Pertanyaan Bagaimana cara menentukan ukuran total direktori (folder) dari baris perintah?


Apakah ada perintah sederhana untuk menampilkan ukuran total agregat (penggunaan disk) dari semua file dalam direktori (folder)?

Saya telah mencoba ini, dan mereka tidak melakukan apa yang saya inginkan:

  • ls -l, yang hanya menampilkan ukuran file individual dalam direktori, juga
  • df -h, yang hanya menampilkan ruang bebas dan digunakan pada disk saya.

682
2017-08-05 18:20


asal


Terkait: Bagaimana daftar ukuran file rekursif dari file dan direktori dalam direktori? - Peter Mortensen
Duplikat lintas situs: Bagaimana cara mendapatkan ukuran direktori pada baris perintah? - Peter Mortensen


Jawaban:


Perintah du "meringkas penggunaan disk dari setiap FILE, secara rekursif untuk direktori," misalnya,

du -hs /path/to/directory
  • -h adalah mendapatkan angka "yang dapat dibaca manusia", mis. mendapatkan 140M dari pada 143260 (ukuran dalam KBytes)
  • -s adalah untuk ringkasan (jika tidak, Anda akan mendapatkan tidak hanya ukuran folder tetapi juga untuk semuanya di folder secara terpisah)

Seperti yang Anda gunakan -h Anda dapat mengurutkan nilai yang dapat dibaca manusia menggunakan

du -sh | sort -h

Itu -h bendera di sort akan mempertimbangkan nilai-nilai ukuran "Manusia Dapat Dibaca".


Jika ingin menghindari secara rekursif daftar semua file dan direktori, Anda dapat menyediakan --max-depth parameter untuk membatasi berapa banyak item yang ditampilkan. Kebanyakan pada umumnya, --max-depth=1

du -sh --max-depth=1 /path/to/directory

1086
2017-08-05 18:27



hormat untuk bekerja ekstra. :) - myusuf3
saya menggunakan du -sh atau DOOSH sebagai cara untuk mengingatnya (CATATAN: perintahnya sama, hanya pengaturan bendera komando untuk keperluan memori) - Marco Ceppi♦
Ada opsi yang berguna untuk du yang disebut --ukuran -sedikit. Ini dapat digunakan untuk menemukan ukuran sebenarnya dari sebuah file atau direktori (dibandingkan dengan jejaknya pada disk) misalnya, sebuah file teks dengan hanya 4 karakter akan menempati sekitar 6 byte, tetapi masih akan muncul sebagai mengambil ~ 4K di output du -sh biasa. Namun, jika Anda melewatkan opsi --ukuran opsional, hasilnya akan menjadi 6. man du mengatakan: - ukuran cetak jelas ukuran, daripada penggunaan disk; meskipun ukuran semu biasanya lebih kecil, mungkin lebih besar karena lubang di file (‘sparse’), fragmentasi internal, pencekalan tidak langsung - Hopping Bunny
Ini berfungsi untuk OS X juga! Terima kasih, saya benar-benar mencari cara untuk membersihkan file, baik di komputer lokal saya, dan server saya, tetapi metode otomatis sepertinya tidak berfungsi. Jadi, saya berlari du -hs * dan masuk ke direktori terbesar dan menemukan file mana yang sangat besar ... Ini adalah metode yang bagus, dan bagian yang terbaik adalah Anda tidak perlu menginstal apa pun! Benar-benar layak menerima pujian saya - Dev
@BandaMuhammadAlHalal Saya pikir ada dua alasan: pembulatan (du memiliki pembulatan yang agak aneh, tidak menunjukkan desimal jika nilainya memiliki lebih dari satu digit dalam unit yang dipilih), dan klasik 1024 vs. 1000 awalan isu. du memiliki opsi -B (atau --block-size) untuk mengubah unit di mana ia menampilkan nilai, atau Anda bisa menggunakannya -b dari pada -h untuk mendapatkan nilai "mentah" dalam byte. - Marcel Stimberg


Baru-baru ini saya menemukan alat interaktif berbasis ncurses yang hebat, yang dengan cepat memberi Anda ikhtisar tentang ukuran direktori. Mencari alat semacam itu selama bertahun-tahun.

  • dengan cepat melakukan pengeboran melalui hierarki file
  • Anda dapat menghapus mis. file temporer besar dari dalam alat
  • sangat cepat

Anggap saja sebagai baobab untuk baris perintah:

apt-get install ncdu

139
2017-10-11 07:24



Ini benar-benar fantastis! Seperti DaisyDisk, untuk OSX - subZero
Alat luar biasa! - Ted
ncdu Mengagumkan! Setelah menginstalnya, lakukan saja ini ncdu /. Anda akan sangat cepat menemukan file-file terbesar di sistem. Juga tekan h saat berada di dalam antarmuka konsol ncdu. Ini memiliki cara pintas yang sangat berguna - vlad-ardelean
Alat yang luar biasa! Terimakasih atas peringatannya! - kstratis


Ini menemukan ukuran secara rekursif dan meletakkannya di samping setiap nama folder, bersama dengan ukuran total di bagian bawah, semua dalam format manusia

du -hsc *

43
2017-12-19 16:32





Nikmati!

du foldername

Informasi lebih lanjut tentang perintah itu sini 


14
2017-08-05 18:22





tree adalah perintah lain yang berguna untuk pekerjaan ini:

Cukup instal via sudo apt-get install tree dan ketikkan yang berikut:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

Dari man tree:

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)

7
2018-01-27 12:37





Di bawah ini adalah apa yang saya gunakan untuk mencetak total, folder, dan ukuran file:

$ du -sch /home/vivek/* | sort -rh

Detail

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

Keluaran

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

5
2017-10-06 14:05





Jawabannya telah membuatnya menjadi jelas du adalah alat untuk menemukan ukuran total direktori. Namun, ada beberapa faktor yang perlu dipertimbangkan:

  • Kadang, du output dapat menyesatkan karena melaporkan ruang yang dialokasikan oleh filesystem, yang mungkin berbeda dari jumlah ukuran file individual. Biasanya filesystem akan mengalokasikan 4096 byte untuk file bahkan jika Anda hanya menyimpan satu karakter di dalamnya!

  • Perbedaan output karena kekuatan 2 dan kekuatan 10 unit. Itu -h beralih ke du membagi jumlah byte dengan 2 ^ 10 (1024), 2 ^ 20 (1048576) dll untuk memberikan output yang dapat dibaca manusia. Banyak orang mungkin lebih terbiasa melihat kekuatan 10 (mis. 1K = 1000, 1M = 1000000) dan dikejutkan oleh hasilnya.

Untuk menemukan jumlah total ukuran semua file dalam direktori, dalam byte, lakukan:

find <dir> -ls | awk '{sum += $7} END {print sum}'

Contoh:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169

3
2018-02-04 18:56



Find-ls-awk akan mengembalikan nilai yang salah untuk folder besar # 1. Untuk awk yang lebih baru Anda dapat menambahkan --bignum atau -M ; jika itu bukan pilihan penggunaan find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc  # 2. - goozez
Jika kekuatan 2 yang digunakan adalah masalah, ada --si pilihan: "seperti -h, tetapi gunakan kekuatan 1000 bukan 1024" - muru


Hanya untuk ukuran direktori dalam format yang mudah dibaca, gunakan yang di bawah ini:

du -hs directoryname

Ini mungkin tidak di bagian yang benar, tetapi dari baris perintah, Anda dapat mencoba:

ls -sh filename

Itu -sadalah ukuran, dan -h adalah manusia yang bisa dibaca.

Menggunakan -l untuk ditampilkan ls daftar, seperti di bawah ini:

ls -shl

1
2018-05-12 09:09