Come elencare le dimensioni di file ricorsive di file e directory in una directory?


50

Come posso elencare tutti i file in una directory e le loro dimensioni ricorsive?

---modificare

Voglio vedere le dimensioni 'arrotolate' alle directory principali nella directory elencata. Non voglio vedere le directory secondarie o i loro contenuti o dimensioni.


1
Vuoi dire che vuoi vedere la dimensione totale (somma) di tutti i file in una cartella, come fare clic con il tasto destro su una cartella sul desktop e selezionare 'Proprietà'?
Pavlos G.,

Stai cercando un software che ti aiuti a trovare file di grandi dimensioni o qualcosa per ottenere un albero di file (comprimibile)?
Lekensteyn,

Ciao @Pavlos G - Intendo la somma per ciascuna delle directory nella directory in cui mi trovo attualmente - non la somma per la directory generale.
falco

@JG - Controlla il mio aggiornamento ;-)
Pavlos G.

Risposte:


53

Immagino che il modo più semplice sia digitando ls -l, o ls -lhche fornirà le dimensioni del file in formato leggibile (KB, MB, ecc.).

Se "ricorsivamente" significa elencare tutte le cartelle successive, ad esempio:

/ foo /
/ foo / bar / ....

Quindi dovresti anche aggiungere un parametro R, come ls -lRols -lhR

Ulteriori informazioni per lspossono essere trovate digitandoman ls

Aggiornare:

Il seguente comando, come proposto da Lekensteyn, probabilmente farà il lavoro:

du -h --max-depth=1 <folder>

-hè per la lettura umana
--apparent-sizeè un altro modo per visualizzare le dimensioni, come già detto
--max-depthè il livello di sottocartelle che si desidera scendere.


Cosa usare per la massima profondità? -1?
dylanh724,

61
apt-get install ncdu

inserisci qui la descrizione dell'immagine

È anche interattivo, quindi se si desidera controllare una sottocartella solo SU, GIÙ e Invio.


Proprio quello che stavo cercando. Grazie mille!
Mathlight,

Forse il consiglio software più sorprendente che abbia mai ricevuto
SomethingSomething

questa dovrebbe essere la risposta approvata
dvdmn

30

Per ottenere la dimensione totale di una directory e di tutti i bambini

du -hs directory/*

Mi piacerebbe il livello successivo da quello - le dimensioni ricorsive di tutti i bambini di primo livello.
falco

1
Modificherò la mia risposta. Devi usare la directory du -h / *
Richard Holloway il

17

Guarda anche tree. Non è installato per impostazione predefinita ma è i repository.

Esempio:

richard@legend:~$ tree Applications/ -s
Applications/
├── [           4096]  AlexFTPS-1.0.2
│   ├── [      31232]  AlexPilotti.FTPS.Client.dll
│   ├── [     274432]  C5.dll
│   ├── [       1457]  C5-License
│   ├── [      35147]  COPYING
│   ├── [       7639]  COPYING.LESSER
│   ├── [         70]  ftps
│   ├── [      28672]  ftps.exe
│   ├── [      98304]  Plossum CommandLine.dll
│   ├── [       1557]  Plossum-License
│   └── [       2560]  README
└── [           4096]  src
    └── [     180849]  AlexFTPS_bin_1.0.2.zip

Altre opzioni sono disponibili nella pagina man.


Le dimensioni devono essere mostrate?
falco

JG: La -s mostra le dimensioni.
Richard Holloway,

1
Mostra la dimensione del record della directory anziché la dimensione della directory completa.
Steven Lu,

-hmostra le dimensioni in modo leggibile dall'uomo, ad estree -s
Eric Wang il

15

Dal momento che non menzionate specificamente la necessità di una soluzione basata su terminali, penso che baobab aka Disk Usage Analyzer non sia presente nell'elenco.

È installato in Ubuntu per impostazione predefinita e fa esattamente quello che vuoi in una bella interfaccia utente grafica con la possibilità di eseguire il drill down della gerarchia di directory.

Oltre a visualizzare un elenco di directory con le loro dimensioni, mostra anche un grafico ad anelli o treemap di utilizzo del filesystem, che è estremamente utile per visualizzare le directory che occupano più spazio.

baobab Disk Usage Analyzer


7

Una soluzione terminale è il ducomando:

du --all --human-readable --apparent-size

(stenografia: du -ah --apparent-size)

duvisualizza l'utilizzo del disco per ciascun file e directory. Le opzioni spiegate:

  • --all, -a- mostra anche le dimensioni dei file, non solo le directory
  • --human-readable, -h- mostra le dimensioni in un formato leggibile dall'uomo, ad esempio 10K(10 kilobyte), 10(10 byte)
  • --apparent-size - mostra le dimensioni effettive del file, non le dimensioni utilizzate dal disco.

Volevo solo i bambini di primo livello
falco

2
@hawkeye per il 1 ° livello che puoi usare--max-depth=1
nikoskip

4
@nikoskip bel consiglio! Anche bello sapere che la stenografia --max-depth=1può essere abbreviata -d1.
Lekensteyn,

come ottenere tutti questi in un ordine
decrescente

come posso visualizzare i contenuti e svuotare: / dev / sda5 ext4 430G 381G 27G 94% / il mio laptop ha meno di 1 mese ed è così pieno che non ha senso
kRazzy R

2

Questo sembra fare il trucco quando sono coinvolti i simlink.

ls -LRlh

la risposta data non mi ha fornito i dettagli per i simlink (ls -lhR), i numeri elencati accanto non corrispondevano alla giusta dimensione di ciascuno dei valori. La mia risposta mi ha dato una gerarchia con una struttura ad albero definita e la risposta corretta .... O ti riferisci ad un'altra risposta votata?
Mulki,

Voto negativo ritirato, votato a favore. Si prega di modificare e mettere il commento in risposta ... Grazie per la spiegazione. ;-)
Fabby

1

Per ottenere un elenco ordinato metti tutto in MB e ordina:

du -m * | sort -n

In alternativa, utilizzare uno strumento come DiskReport per generare un report dell'albero del disco completo.


1

Un'altra soluzione terminale con finde ordinamento (per dimensione file, colonna 1)

$ find . -maxdepth 1 ! -path . -printf "%s %p\n" | sort -n -k1                              
178 ./somefile.txt
219 ./somefile2.txt
4096 ./c
4096 ./cs2
4096 ./perl
4096 ./python
4096 ./random
4096 ./sh

Questo non mostra la dimensione della directory.
Muru,
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.