Domanda Come determinare la dimensione totale di una directory (cartella) dalla riga di comando?


Esiste un semplice comando per visualizzare la dimensione aggregata totale (utilizzo del disco) di tutti i file in una directory (cartella)?

Ho provato questi e non fanno quello che voglio:

  • ls -l, che visualizza solo la dimensione dei singoli file in una directory, né
  • df -h, che mostra solo lo spazio libero e usato sui miei dischi.

682
2017-08-05 18:20


origine


Relazionato: Come elencare le dimensioni di file ricorsive di file e directory in una directory? - Peter Mortensen
Duplicazione cross-site: Come ottengo la dimensione di una directory sulla riga di comando? - Peter Mortensen


risposte:


Il comando du "riepiloga l'utilizzo del disco di ciascun FILE, in modo ricorsivo per le directory", ad es.

du -hs /path/to/directory
  • -h è quello di ottenere i numeri "leggibili dall'uomo", ad es. ottenere 140M invece di 143260 (dimensione in KBytes)
  • -s è per il sommario (altrimenti otterrai non solo la dimensione della cartella ma anche per tutto in la cartella separatamente)

Come stai usando -h puoi ordinare i valori leggibili dall'uomo usando

du -sh | sort -h

Il -h flag on sort prenderà in considerazione i valori delle dimensioni "leggibili".


Se si desidera evitare di elencare in modo ricorsivo tutti i file e le directory, è possibile fornire --max-depth parametro per limitare il numero di elementi visualizzati. Più comunemente, --max-depth=1

du -sh --max-depth=1 /path/to/directory

1086
2017-08-05 18:27



il rispetto per fare il miglio supplementare. :) - myusuf3
Io uso du -sh o DOOSH come modo per ricordarlo (NOTA: il comando è lo stesso, solo l'organizzazione dei flag a riga di comando a scopo di memoria) - Marco Ceppi♦
C'è un'opzione utile per chiamare la dimensione -apparente. Può essere usato per trovare la dimensione reale di un file o di una directory (al contrario del suo ingombro sul disco), ad esempio, un file di testo con solo 4 caratteri occuperà circa 6 byte, ma verrà comunque visualizzato come occupando ~ 4K in un normale output du -sh. Tuttavia, se si passa l'opzione --apparent-size, l'output sarà 6. man du dice: - dimensioni apparenti di stampa delle dimensioni apparenti, piuttosto che l'utilizzo del disco; anche se la dimensione apparente è solitamente più piccola, potrebbe essere più grande a causa di buchi nei file ('sparse'), frammentazione interna, blocchi indiretti - Hopping Bunny
Funziona anche per OS X! Grazie, stavo davvero cercando un modo per ripulire i file, sia sul mio computer locale, sia sul mio server, ma i metodi automatizzati sembravano non funzionare. Quindi, ho corso du -hs * e andò nella directory più grande e scoprì quali file erano così grandi ... Questo è un buon metodo, e la parte migliore è che non devi installare nulla! Sicuramente meritato il mio upvote - Dev
@BandaMuhammadAlHelal Penso che ci siano due ragioni: arrotondare (du ha un arrotondamento un po 'particolare, senza decimali se il valore ha più di una cifra nell'unità scelta) e il classico Prefisso 1024 vs. 1000 problema. du ha un'opzione -B (o --block-size) per cambiare le unità in cui visualizza i valori, oppure è possibile utilizzare -b invece di -h per ottenere il valore "grezzo" in byte. - Marcel Stimberg


Recentemente ho trovato un ottimo strumento interattivo basato su ncurses, che fornisce rapidamente una panoramica sulle dimensioni delle directory. Ho cercato questo tipo di strumento per anni.

  • drill-down rapido attraverso la gerarchia dei file
  • puoi eliminare ad es. enormi file temporanei all'interno dello strumento
  • estremamente veloce

Pensalo come baobab per la riga di comando:

apt-get install ncdu

139
2017-10-11 07:24



Questo è assolutamente fantastico! Come DaisyDisk, per OSX - subZero
Strumento incredibile! - Ted
ncdu è fantastico! Dopo averlo installato, basta fare questo ncdu /. Troverai molto velocemente i file più grandi sul sistema. Anche premere h mentre all'interno dell'interfaccia della console di ncdu. Ha scorciatoie molto utili - vlad-ardelean
Strumento fantastico! Grazie per il testa a testa! - kstratis


Questo trova la dimensione in modo ricorsivo e lo colloca accanto al nome di ciascuna cartella, insieme alla dimensione totale nella parte inferiore, il tutto nel formato umano

du -hsc *

43
2017-12-19 16:32





Godere!

du foldername

Maggiori informazioni su questo comando Qui 


14
2017-08-05 18:22





tree è un altro comando utile per questo lavoro:

Basta installarlo tramite sudo apt-get install tree e digita quanto segue:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

A partire dal albero dell'uomo:

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)

7
2018-01-27 12:37





Di seguito è riportato ciò che sto utilizzando per stampare il totale, la cartella e le dimensioni del file:

$ du -sch /home/vivek/* | sort -rh

Dettagli

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

Produzione

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

5
2017-10-06 14:05





Le risposte lo hanno reso ovvio du è lo strumento per trovare la dimensione totale di una directory. Tuttavia, ci sono un paio di fattori da considerare:

  • Di tanto in tanto, du l'output può essere fuorviante perché riporta lo spazio allocato dal filesystem, che potrebbe essere diverso dalla somma delle dimensioni dei singoli file. In genere il filesystem assegnerà 4096 byte per un file anche se in esso è stato memorizzato un solo carattere!

  • Differenze di uscita dovute alla potenza di 2 e potenza di 10 unità. Il -h passa a du divide il numero di byte di 2 ^ 10 (1024), 2 ^ 20 (1048576) ecc. per dare un output leggibile dall'uomo. Molte persone potrebbero essere più abituate a vedere poteri di 10 (ad esempio 1K = 1000, 1M = 1000000) e rimanere sorpresi dal risultato.

Per trovare la somma totale delle dimensioni di tutti i file in una directory, in byte, fare:

find <dir> -ls | awk '{sum += $7} END {print sum}'

Esempio:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169

3
2018-02-04 18:56



Find-ls-awk restituirà un valore errato per le cartelle di grandi dimensioni # 1. Per i nuovi awk puoi aggiungere --bignum o -M ; se quello non è un'opzione usi find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc  # 2. - goozez
Se le potenze di 2 utilizzate sono un problema, c'è il --si opzione: "come -h, ma usa le potenze di 1000 non 1024" - muru


Solo per la dimensione della directory in un formato leggibile, utilizzare il seguente:

du -hs directoryname

Questo probabilmente non è nella sezione corretta, ma dalla riga di comando, puoi provare:

ls -sh filename

Il -sè la dimensione, e il -h è leggibile dall'uomo.

Uso -l mostrare ls lista, come di seguito:

ls -shl

1
2018-05-12 09:09