Impossibile ottenere la dimensione di una directory con ls
Domanda
faccio funzionare l'ordine senza successo per ottenere la dimensione di directory (file all'interno appartengono alla dimensione di una directory)
ls -lSrh
ottengo kilobits solo per la dimensione delle cartelle, mentre il loro contenuto è più di questo.
Come si può elencare la dimensione delle cartelle, tra cui il loro contenuto nel numero da ls
Soluzione
du -sh directory_name
ls
sta per darvi la dimensione della directory entry , non del contenuto della directory. Sulla base della mia scremato rapida di man ls
non sembra essere un modo per fare <=> tuffo verso il basso e calcolare la dimensione delle directory (molto probabilmente perché sarebbe un'operazione costosa).
Altri suggerimenti
Se si desidera ottenere dimensioni delle directory, è possibile utilizzare
du -sh
du -hs
è grande fino a quando si dispone di una grande directory.
Per esempio, se si memorizzano file di cache (ad esempio l'archivio file system di cache per Rails) o file caricati, ... con uno schema partizionato, come "cache / 123/456/789 / real_files" e hai un sacco di loro , du
sta prendendo per sempre, alla fine bloccare tutto IO.
Non ho una soluzione migliore, ma questo è da considerare prima di eseguire questo sul server di produzione durante il periodo di picco.
Sulla risposta di Sean luminoso è possibile effettuare le seguenti (in bash)
for each in $(echo */ | sed "s/ /\n/g" | sed "s/\///g"); do du -hs "$each"; done;
In questo modo ottenere un contenuto completo directory per tutte le directory nella directory corrente.