Come posso calcolare la dimensione di una directory?


181

Come conoscere la dimensione di una directory? Comprese sottodirectory e file.

Risposte:


230
du -s directory_name

O per ottenere un output leggibile dall'uomo:

du -sh directory_name

L' -sopzione significa che non elencherà la dimensione per ogni sottodirectory, ma solo la dimensione totale.


7
duL'unità predefinita in realtà è blocchi da 512 byte secondo POSIX e kilobyte su Linux (a meno che non POSIXLY_CORRECTsia impostata la variabile di ambiente ) o con du -k.
Gilles,

3
@Gilles: buona cattura. Ho rimosso il bit "numero di byte" dalla mia risposta.
sepp2k,

1
ha funzionato come prescritto
skidadon,

1
se la directory è molto grande e ha molte sottodirectory, ci vuole molto tempo ... quasi 1 minuto .. è normale? c'è un modo per ottenere le dimensioni più rapidamente?
Sì,

2
Avevo bisogno di calcolare la dimensione della mia cartella "bag", ha du -sh bagfunzionato perfettamente!
António Almeida

7

Mentre l'utilizzo di un pacchetto separato come ncdu può funzionare bene, lo stesso confronto di molte cartelle può essere fatto, in una certa misura, semplicemente dando un elenco di cartelle da ridimensionare. Ad esempio per confrontare le directory di livello superiore sul tuo sistema ...

cd /    
sudo du -sh ./*

2
Più semplicemente,du -sh /*
roaima,


1
du -csh

-c produce un totale generale


1
Il -cnon ha senso usare insieme -s, giusto? -svisualizza solo la dimensione della directory specificata, ovvero la dimensione totale della directory.
Andreas Storvik Strauman,

1

Provare

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Questo aiuta a trovare directory di grandi dimensioni per poi setacciare tramite du -sh ./*


0

puoi anche usare ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l è per una lunga lista; -d è per visualizzare le informazioni dir, non il contenuto della dir, -h è per visualizzare le dimensioni in formato leggibile huma.


4
Questo non è corretto, la persona che chiede è chiaramente alla ricerca dell'impronta di una directory e dei suoi contenuti su disco. La risposta di @ sepp2k è corretta.
blong,

1
Il comando ls -ldh mostra solo la dimensione della struttura di inode di una directory. La metrica riflette le dimensioni della tabella dell'indice dei nomi dei file, ma non le dimensioni effettive del contenuto del file all'interno della directory.
linbianxiaocao,

0

Installo sempre il pacchetto "ncdu" e vedo tutto l'output di tutte le directory con rappresentazione grafica. Questo perché di solito ho bisogno di sapere cosa occupa la maggior parte dello spazio su disco sui miei computer, indipendentemente da quanto sommi una singola directory.

Utilizzo: sudo ncdu /(non è necessario sudoper le cartelle su cui si dispone dell'autorizzazione di lettura).

Ci vorrà del tempo per scansionare le statistiche sull'utilizzo del disco sull'intero file system. Ha una bella rappresentazione grafica da riga di comando e include la navigazione tramite tastiera usando i tasti freccia, come andare più in profondità o più in alto nel percorso scansionato. È inoltre possibile eliminare elementi premendo D.



0

du -hd1

elencherà in formato leggibile dall'uomo le dimensioni di tutte le directory, ad es

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config

0

Ho provato con il comando seguente poiché è già stata fornita la migliore risposta

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

produzione

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
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.