Elencare le dimensioni della cartella della cartella corrente con il terminale?


134

Voglio un elenco delle cartelle dalla directory corrente o una che specifica con le loro dimensioni.

Ho provato con du ma ottengo solo le dimensioni delle directory specificate (du. ./F1) e ls non mostra le dimensioni delle cartelle.

Come posso farlo senza script?


non sembrare un coglione, ma "man du";)
Jakub,

5
Grazie ;-) ma ho già provato e non sono riuscito a trovare nulla. E prova Googling du!
Kevin

Risposte:


212

Se vuoi mostrare tutte le directory nella directory corrente:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Per mostrarli a partire da un'altra directory:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Se vuoi assicurarti che siano incluse le directory con nomi che iniziano con un punto, fallo shopt -s dotglobprima.


Grazie a tutte le risposte fantastiche, ma questa è la più semplice. Ho dimenticato il finale / nei miei test.
Kevin

1
Dove -s significa riassumere, visualizzare il totale e -h significa leggibile dall'uomo
wranvaud,

2
Ordina le cartelle in base alle dimensioni: du -s */ | sort -n.
Anton Tarasenko,


1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson,

18

Su un Mac, l'opzione --max-depth è soppiantata da -d [depth]. Quindi, per vedere un elenco leggibile dall'uomo del tuo root drive più 2 livelli in profondità usa quanto segue:

du -hd 2 /* 

Nota: questo comando esporrà i primi due livelli di directory dalla radice. Ciò include l'attraversamento di un livello nei volumi e un elenco delle dimensioni di riepilogo di ciascuna directory di livello superiore in ciascuno dei volumi collegati. A seconda di ciò che è stato allegato, il completamento di questo comando potrebbe richiedere del tempo.


13

Un altro approccio è l'opzione --max-depth.

du -h --max-depth=1 .

Elencherà tutte le directory e i file nella cartella corrente con dimensioni.

Profondità 2 elenca un altro livello di cartelle.


4
Su Mac, è du -hd 2 .per 2 livelli di profondità.
Ryan,

Ah sì. E probabilmente anche su FreeBSD. Grazie per le informazioni.
Matthias Krull,

5

Provare:

$ du -s ./f1

o

$ du -sh ./f1

per dimensioni leggibili più amichevoli.


2

$ du --max-depth=1 /var/www/ | sort -n -r


3
Quando aggiungi una risposta a una domanda precedente con risposte esistenti, è buona norma spiegare in che modo la tua risposta è diversa e includere alcune spiegazioni in modo che non si tratti solo di un comando.
Jason Aller,

3
Puoi espandere la tua risposta per spiegare cosa fanno i parametri?
fixer1234

2

Vale la pena menzionare il comando shell NCurses Disk Usage .

Ncdu è un analizzatore di utilizzo del disco con un'interfaccia ncurses. È progettato per trovare porci di spazio su un server remoto in cui non è disponibile un'intera configurazione grafica, ma è uno strumento utile anche su normali sistemi desktop. Ncdu mira ad essere veloce, semplice e facile da usare e dovrebbe essere in grado di funzionare in qualsiasi ambiente minimale simile a POSIX con ncurses installato.


2

Sulla base della risposta accettata, questo comando ti mostrerà le dimensioni delle cartelle nella directory e le elencherà anche in base alle dimensioni per poterle interpretare più facilmente:

$ du -sh */ | sort -rn

1

Su Mac, è possibile installare l'implementazione GNU (Linux) ducon Homebrew ( brew install coreutils). Quindi ad esempio:

gdu folder -shL --exclude=.git

dove

  • gduè il nome dato all'implementazione GNU di du(di default Homebrew non si nasconde /usr/bin/du);
  • s produce un totale generale per la cartella specificata (omettere se si desidera visualizzare la suddivisione);
  • h produce dimensioni leggibili dall'uomo;
  • L segue i collegamenti simbolici;
  • --exclude=.git esclude la directory git all'interno della cartella specificata (questo è solo un esempio).

È possibile ignorare più cartelle aggiungendo --exclude=blah. È inoltre possibile specificare più cartelle contemporaneamente (ad es. gdu folder1 folder2 ...) E, in tal caso, è possibile combinare tutti i totali parziali in un'unica dimensione utilizzando l'opzione c.


1

Ecco uno script POSIX che funzionerà con:

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

fonte

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.