Visualizzare ciascuna dimensione della sottodirectory in un formato elenco usando un comando di riga in Bash?


100

Voglio ottenere un elenco delle directory e delle loro dimensioni in un formato elenco come quello che ottieni quando fai un ls -l.

Il fatto è che esiste un comando a una riga che può farlo? Vedo che gli altri hanno comandi lunghi solo per produrre questo. È troppo lungo.

Quale comando può fare questo o una combinazione di comandi che possono essere facilmente digitati? du -hlo dà, ma mostra tutte le sottocartelle che non è quello che voglio. solo le cartelle delle directory correnti.

Risposte:


71

Probabilmente vuoi vedere le directory ordinate per dimensione:

$ 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

Questo non funziona se esiste un numero elevato di voci nella directory. bash: /run/current-system/sw/bin/du: Argument list too long
Chris Stryczynski,

123

Prova questo

du -h --max-depth=1

Produzione

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    .

Alternativa

Se --max-depth=1è un po 'troppo lungo per i tuoi gusti, puoi anche provare a usare:

du -h -s *

Questo utilizza -s( --summarize) e stamperà solo la dimensione della cartella stessa per impostazione predefinita. Passando tutti gli elementi nella directory di lavoro corrente ( *), produce un output simile come --max-depth=1:

Produzione

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

La differenza è sottile. Il primo approccio visualizzerà la dimensione totale della directory di lavoro corrente e la dimensione totale di tutte le cartelle in essa contenute ... ma solo fino a una profondità di 1.

Quest'ultimo approccio calcolerà la dimensione totale di tutti gli elementi passati singolarmente . Pertanto, include il collegamento simbolico lib64nell'output, ma esclude gli elementi nascosti (il cui nome inizia con un punto). Manca anche la dimensione totale per la directory di lavoro corrente, poiché non è stata passata come argomento.


4
Risposta perfetta Su Mac OSX il --depthparametro non è riconosciuto. Utilizzare du -h -d 1per lo stesso risultato.
Dylan,


2

Vale la pena menzionare il comando shell NCurses Disk Usage .

Ncdu è un analizzatore di utilizzo del disco con un'interfaccia ncurses. È progettato per trovare porci di spazio su un server remoto in cui non è disponibile un'intera configurazione grafica, ma è uno strumento utile anche su normali sistemi desktop. Ncdu mira ad essere veloce, semplice e facile da usare e dovrebbe essere in grado di funzionare in qualsiasi ambiente minimale simile a POSIX con ncurses installato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.