Daftar ukuran folder folder saat ini dengan terminal?

134

Saya ingin daftar folder dari direktori saat ini atau yang saya tentukan dengan ukurannya.

Saya telah mencoba dengan du tetapi saya hanya mendapatkan ukuran direktori yang saya tentukan (du ./f1), dan ls tidak menunjukkan ukuran folder.

Bagaimana saya melakukan ini tanpa skrip?

kevin
sumber
tidak terdengar seperti brengsek, tapi 'man du';)
Jakub
5
Terima kasih ;-) tetapi saya sudah mencoba dan tidak dapat menemukan apa pun. Dan coba Googling du!
kevin

Jawaban:

212

Jika Anda ingin menampilkan semua direktori di direktori saat ini:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Untuk menunjukkan kepada mereka mulai dari direktori lain:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Jika Anda ingin memastikan direktori dengan nama yang dimulai dengan titik dimasukkan, lakukan shopt -s dotglobterlebih dahulu.

Dennis Williamson
sumber
Terima kasih semua jawaban yang bagus tetapi yang ini adalah yang paling sederhana. Saya lupa akhir / dalam tes saya.
kevin
1
Di mana -s berarti meringkas, menampilkan total dan -h berarti dapat dibaca manusia
wranvaud
2
Menyortir folder dengan ukuran: du -s */ | sort -n.
Anton Tarasenko
1
@AntonTarasenko: Sortir ukuran yang bisa dibaca manusia
Dennis Williamson
1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson
18

Pada Mac, opsi --max-depth digantikan oleh -d [depth]. Jadi, untuk melihat daftar yang dapat dibaca manusia dari drive root Anda ditambah 2 level, gunakan yang berikut ini:

du -hd 2 /* 

Catatan: perintah ini akan mengekspos dua tingkat direktori teratas dari root Anda. Ini termasuk melintasi satu tingkat ke dalam Volume Anda , dan akan mencantumkan ukuran ringkasan dari setiap direktori tingkat atas di setiap volume terlampir Anda. Bergantung pada apa yang Anda lampirkan, perintah ini bisa memakan waktu untuk diselesaikan.

jadik
sumber
13

Pendekatan lain adalah opsi --max-depth.

du -h --max-depth=1 .

Akan mencantumkan semua direktori dan file di bawah folder saat ini dengan ukuran.

Kedalaman 2 akan membuat daftar satu tingkat folder lagi.

matthias krull
sumber
4
Di Mac, ini du -hd 2 .untuk 2 level kedalaman.
Ryan
Ah iya. Dan mungkin di FreeBSD juga. Terimakasih atas infonya.
matthias krull
5

Mencoba:

$ du -s ./f1

atau

$ du -sh ./f1

untuk ukuran lebih mudah dibaca yang ramah.

Doug Harris
sumber
2

$ du --max-depth=1 /var/www/ | sort -n -r

Andre Mesquita
sumber
3
Saat menambahkan jawaban ke pertanyaan yang lebih lama dengan jawaban yang ada, praktik yang baik untuk menjelaskan bagaimana jawaban Anda berbeda dan menyertakan beberapa penjelasan sehingga itu bukan jawaban hanya perintah.
Jason Aller
3
Bisakah Anda memperluas jawaban Anda untuk menjelaskan apa yang dilakukan parameter?
fixer1234
2

Layak untuk menyebutkan perintah shell Penggunaan NCurses Disk .

Ncdu adalah penganalisis penggunaan disk dengan antarmuka ncurses. Ini dirancang untuk menemukan ruang babi di server jauh di mana Anda tidak memiliki seluruh pengaturan grafis yang tersedia, tetapi itu adalah alat yang berguna bahkan pada sistem desktop biasa. Ncdu bertujuan untuk menjadi cepat, sederhana dan mudah digunakan, dan harus dapat dijalankan di lingkungan minimal seperti POSIX dengan ncurses diinstal.

sinar
sumber
2

Membangun berdasarkan jawaban yang diterima, perintah ini akan menunjukkan kepada Anda ukuran folder di direktori, dan juga akan mencantumkannya berdasarkan ukuran agar Anda dapat mengartikannya dengan lebih mudah:

$ du -sh */ | sort -rn
Ethan
sumber
1

Di Mac, Anda dapat menginstal implementasi GNU (Linux) dudengan Homebrew ( brew install coreutils). Lalu misalnya:

gdu folder -shL --exclude=.git

dimana

  • gduadalah nama yang diberikan untuk implementasi GNU du(secara default Homebrew tidak menyembunyikan /usr/bin/du);
  • s menghasilkan total besar untuk folder yang ditentukan (hilangkan jika Anda ingin melihat rinciannya);
  • h menampilkan ukuran yang bisa dibaca manusia;
  • L mengikuti symlinks;
  • --exclude=.git mengecualikan direktori git dalam folder yang ditentukan (ini hanyalah sebuah contoh).

Anda dapat mengabaikan lebih banyak folder dengan menambahkan --exclude=blah. Anda juga dapat menentukan beberapa folder sekaligus (yaitu gdu folder1 folder2 ...), dan dalam hal ini, Anda dapat menggabungkan semua subtotal menjadi satu ukuran menggunakan opsi c.

Sheljohn
sumber
1

Berikut ini skrip POSIX yang akan bekerja dengan:

  • File
  • File
  • Direktori
  • Direktori
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Sumber

Steven Penny
sumber