it-swarm.it

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

Esiste un semplice comando per visualizzare la dimensione totale aggregata (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 visualizza solo lo spazio libero e utilizzato sui miei dischi.
774
David Barry

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

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

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

du -h | sort -h

Il flag -h su sort prenderà in considerazione i valori di dimensione "Human Readable".


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

du -h --max-depth=1 /path/to/directory
1243
Marcel Stimberg

Di recente ho trovato un ottimo strumento interattivo basato su ncurses, che offre rapidamente una panoramica delle dimensioni delle directory. Ho cercato quel tipo di strumento per anni.

  • drilldown rapido nella gerarchia dei file
  • puoi eliminare ad es. enormi file temporanei dall'interno dello strumento
  • estremamente veloce

Pensalo come baobab per la riga di comando:

apt-get install ncdu
164
geekQ

Questo trova la dimensione in modo ricorsivo e la mette accanto al nome di ogni cartella, insieme alla dimensione totale in fondo, il tutto nel formato umano

du -hsc *
51
Brad

Godere!

du foldername

Ulteriori informazioni su quel comando qui

16
myusuf3

tree è un altro comando utile per questo lavoro:

Basta installarlo tramite Sudo apt-get install tree e digitare quanto segue:

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

33.7M used in 0 directories, 25 files

Da man tree :

-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.)
10
αғsнιη

Di seguito è quello che sto usando 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
9
vivekyad4v

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

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

  • Differenze di uscita dovute alla potenza di 2 e alla potenza di 10 unità. -h passa a du divide il numero di byte per 2 ^ 10 (1024), 2 ^ 20 (1048576) ecc. Per fornire 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, eseguire:

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

Esempio:

$ du -s -B 1
255729664

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

Solo per le dimensioni della directory in un formato leggibile, utilizzare quanto segue:

du -hs directoryname

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

ls -sh filename

-s è size e -h è leggibile dall'uomo.

Usa -l per mostrare nell'elenco ls, come di seguito:

ls -shl
1
Shiv Singh

du /foldername è il comando standard per conoscere la dimensione di una cartella. È consigliabile trovare le opzioni leggendo la pagina man:

man du

Dovresti leggere la pagina man (disponibile online ) prima di usare il comando.

0

Ecco uno script POSIX che funzionerà con:

  • Un file
  • File
  • Una directory
  • Elenchi
#!/bin/sh
ls -ARgo "[email protected]" | awk '{q += $3} END {print q}'

Source

0
Steven Penny

Se la directory desiderata ha molte sottodirectory, utilizzare quanto segue:

$ cd ~/your/target/directory
$ du -csh 

-c, --total produce un totale complessivo
- s, --summarize mostra solo un totale per ogni argomento
- h, - formati di stampa leggibili dall'uomo in formato leggibile dall'uomo (ad es. 1K 234M 2G)

che quindi produrrebbe un totale complessivo dell'utilizzo della memoria da parte di tutti i file/cartelle nella directory corrente.

0
kmario23