it-swarm.it

Come posso calcolare la dimensione di una directory?

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

189
Juanjo Conti
du -s directory_name

O per ottenere un output leggibile dall'uomo:

du -sh directory_name

Il -s indica che non elenca le dimensioni per ciascuna sottodirectory, ma solo le dimensioni totali.

245
sepp2k

GNU du accetta un -b opzione.

Vedi man page e info page per ulteriore aiuto:

-b, --bytes è equivalente a --apparent-size --block-size=1

7
user2573436

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 ./*
7
NFlourish
du -csh

-c produce un totale generale

1
Kalpesh Soni

Provare

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

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

1
rollinjack

Puoi usare "file-size.sh" dal awk libreria Velour :

ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'
1
Steven Penny

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 hai bisogno di Sudo per le cartelle su cui hai i permessi 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
Etescartz

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
Boris Yakubchik

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
0
Praveen Kumar BS

La domanda originale chiedeva la dimensione, ma non specificava se fosse la dimensione sul disco o la dimensione effettiva dei dati.

Ho scoperto che il calcolo di 'du' può variare tra server con la stessa partizione delle dimensioni usando lo stesso file system. Se le caratteristiche del file system differiscono, questo ha senso, ma altrimenti non riesco a capire il perché. La risposta "ls | awk" che Steven Penny ha dato produce una risposta più coerente, ma mi ha comunque dato risultati incoerenti con elenchi di file molto grandi.

L'uso di "find" ha dato risultati coerenti per oltre 300.000 file, anche quando si confronta un server utilizzando XFS e un altro utilizzando EXT4. Quindi, se vuoi conoscere i byte totali di dati in tutti i file, allora suggerisco che questo sia un buon modo per ottenerlo:

find /whatever/path -type f -printf "%s\n"|awk '{q+=$1} END {print q}'
0
Angelo Babudro

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.

0
fromnaboo