Come trovare ricorsivamente l'importo memorizzato nella directory?


136

So che sei in grado di vedere la dimensione in byte di un file quando fai un lungo elenco con llo ls -l. Ma voglio sapere quanto spazio di archiviazione è presente in una directory, inclusi i file all'interno di quella directory e le relative sottodirectory, ecc. Non voglio il numero di file, ma piuttosto la quantità di spazio di archiviazione di quei file.

Quindi voglio sapere quanta memoria è ricorsivamente in una determinata directory? Immagino, se c'è un comando, che sarebbe in byte.

Risposte:


146

Prova a fare questo:

du -s dir

o

du -sh dir

necessita di -hsupporto, dipende dal tuo sistema operativo.

Vedere

man du

2
aggiungi -ball'output in byte
pcnate

4
--all elenca tutti i file e -h mostra le dimensioni del file in formato leggibile dall'uomo du -h --all
Praneeth

29

Fai solo:

du -sh /path/to/directory

dove -sè per un riepilogo e -hper la lettura umana ( opzione non standard ).

Fai attenzione tuttavia, a differenza ls, questo non ti mostrerà la dimensione del file ma l' utilizzo del disco (cioè un multiplo della dimensione del blocco del filesystem), ma il file potrebbe essere più piccolo o persino più grande, quindi puoi usare l' --apparent-sizeopzione:

du -sh --apparent-size /path/to/directory

Questa è la dimensione che verrebbe trasferita sulla rete se fosse necessario.

In effetti, il file può contenere "buchi" (shell vuota), può essere più piccolo della dimensione del blocco del filesystem, può essere compresso a livello di filesystem, ecc. La pagina man spiega questo.

Come sottolinea Nicklas , puoi anche utilizzare l' analizzatore di utilizzo del disco. Avviato da una directory ti mostrerà quali cartelle e file utilizzano lo spazio su disco ordinandoli dal più grande al più piccolo.ncdu

Puoi vedere anche questa domanda .


19

Nota che se vuoi conoscere tutte le dimensioni di {sub} cartelle all'interno di una directory, puoi anche usare l' opzione -do (che accetta un argomento: il limite ricorsivo)--max-depthdu

Per esempio :

du -h /path/to/directory -d 1

Ti mostrerà qualcosa di simile

4.0K /path/to/directory/folder1
16M  /path/to/directory/folder2
2.4G /path/to/directory/folder3
68M  /path/to/directory/folder4
8G   /path/to/directory/folder5

PS: l'immissione 0come limite ricorsivo equivale -sall'opzione. Quei 2 comandi ti daranno lo stesso risultato (la tua data dimensione ricorsiva leggibile dall'uomo della directory):

du -h /path/to/directory -d 0
du -sh /path/to/directory

-d 1deve essere prima del percorso della directory
Abhinav Singi,

Esigenze? Funziona per me dopo il percorso della directory, su Ubuntu / Debian. È più bello averlo prima, sono d'accordo
Flo Schild

14

Un'alternativa al ducomando già menzionato sarebbe ncduche è un buon analizzatore di utilizzo del disco da usare nel terminale. Potrebbe essere necessario installarlo prima, ma è disponibile nella maggior parte dei repository di pacchetti.

Modifica: per il formato di output vedere questi screenshot http://dev.yorhel.nl/ncdu/scr


Miracolo! Con questo posso vedere quali cartelle contengono un volume elevato di spazio di archiviazione su disco. Ho anche trovato tutti i miei file misteriosamente scomparsi. È uno strumento eccezionale.
Faron,

11

Questo ti darà un elenco di dimensioni dalla directory corrente, comprese le cartelle (ricorsive) e i file.

$ du -hs *
7.5M    Applications
9.7M    Desktop
 85M    Documents
 16K    Downloads
 12G    Google Drive
 52G    Library
342M    Movies
8.3M    Music
780M    Pictures
8.5G    Projects
8.0K    Public
 16K    client1.txt

3
ordinare per dimensione: du -hs * | sort -hs
Kaiser

3

In Unix, una directory contiene solo nomi e riferimenti a oggetti di filesystem (inode, che possono fare riferimento a directory, file o altre cose esotiche). Un file può apparire con più nomi nella stessa directory o essere elencato in più directory. Quindi "lo spazio utilizzato dalla directory e dai file all'interno" non ha davvero senso, poiché i file non sono "dentro".

Detto questo, il comando du(1)elenca lo spazio utilizzato da una directory e tutto ciò che è raggiungibile attraverso di essa, du -sfornisce un riepilogo, con -halcune implementazioni come GNU duforniscono output "leggibili dall'uomo" (ad esempio, kilobyte, megabyte).


1

Per me ha funzionato all'indietro nel caso della profondità e del percorso su un OS X El Capitán

du -h -d 1 /path/to/directory

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.