Tampilkan setiap ukuran sub-direktori dalam format daftar menggunakan satu perintah baris di Bash?

101

Saya ingin mendapatkan daftar direktori dan ukurannya dalam format daftar seperti bagaimana Anda dapatkan ketika Anda melakukan a ls -l.

Masalahnya adalah apakah ada perintah satu baris yang dapat melakukan ini? Saya melihat orang lain memiliki perintah panjang hanya untuk menampilkan ini. Itu terlalu lama.

Perintah apa yang dapat melakukan ini atau kombinasi dari perintah yang dapat dengan mudah diketik? du -hmemberikannya, tetapi menampilkan semua sub-folder yang bukan yang saya inginkan. hanya folder direktori saat ini.

Patoshi パ ト シ
sumber

Jawaban:

71

Anda mungkin ingin melihat direktori yang dipesan berdasarkan ukuran:

$ du -hs * | sort -hr

856M    lib
746M    share
612M    lib64
312M    src
267M    java
239M    bin
179M    sbin
173M    local
93M     i686-w64-mingw32
72M     libexec
26M     include
20M     puppet
772K    X11R6
20K     man
4.0K    games
4.0K    etc
0       tmp
raychi
sumber
Ini tidak berfungsi jika ada banyak entri dalam direktori. bash: /run/current-system/sw/bin/du: Argument list too long
Chris Stryczynski
123

Coba ini

du -h --max-depth=1

Keluaran

oliver@home:/usr$ sudo du -h --max-depth=1
24M     ./include
20M     ./sbin
228M    ./local
4.0K    ./src
520M    ./lib
8.0K    ./games
1.3G    ./share
255M    ./bin
2.4G    .

Alternatif

Jika --max-depth=1agak lama untuk selera Anda, Anda juga dapat mencoba menggunakan:

du -h -s *

Ini menggunakan -s( --summarize) dan hanya akan mencetak ukuran folder itu sendiri secara default. Dengan melewatkan semua elemen dalam direktori kerja saat ini ( *), ia menghasilkan output yang sama seperti --max-depth=1:

Keluaran

oliver@cloud:/usr$ sudo du -h -s *
255M    bin
8.0K    games
24M     include
520M    lib
0       lib64
228M    local
20M     sbin
1.3G    share
4.0K    src

Perbedaannya halus. Pendekatan sebelumnya akan menampilkan ukuran total direktori kerja saat ini dan ukuran total semua folder yang terkandung di dalamnya ... tetapi hanya sampai kedalaman 1.

Pendekatan terakhir akan menghitung ukuran total semua item yang berlalu secara individual . Dengan demikian, ini termasuk symlink lib64dalam output, tetapi mengecualikan item yang tersembunyi (yang namanya dimulai dengan titik). Itu juga tidak memiliki ukuran total untuk direktori kerja saat ini, karena itu tidak disahkan sebagai argumen.

Der Hochstapler
sumber
4
Jawaban sempurna. Pada Mac OSX --depthparameter tidak dikenali. Gunakan du -h -d 1untuk hasil yang sama.
Dylan
6

Cetak ukuran semua folder file dan file tersembunyi di disk:

el@dev /home/el $ du -sh `ls -a`
258M    .
265M    ..
4.0K    .classpath
258M    .git
4.0K    .gitignore
9.0K    nbactions.xml
12K     README
20K     .README.swp
4.0K    run.sh
23K    XmlPostPropagate.php
Eric Leschinski
sumber
2
Tapi waspadalah! Mengapa Anda tidak perlu menguraikan output ls (1)
Kamil Maciorowski
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