Ricerca di file che utilizzano più spazio su disco


43

È possibile elencare i file più grandi sul mio disco rigido? Uso spesso df -Hper visualizzare il mio utilizzo del disco, ma questo fornisce solo la percentuale piena, i GB rimanenti, ecc.

Faccio molti calcoli ad alta intensità di dati, con un gran numero di piccoli file e un numero molto piccolo di file molto grandi. Poiché la maggior parte dello spazio su disco utilizzato è in un numero molto ridotto di file, può essere difficile rintracciare dove si trovano questi file di grandi dimensioni. L'eliminazione di un file da 1 KB non libera molto spazio, mentre l'eliminazione di un file da 100 GB lo fa. Esiste un modo per ordinare i file sul disco rigido in termini di dimensioni?

Grazie.


Risposte:


47

Con strumenti standard disponibili:

Per elencare i primi 10 file più grandi dalla directory corrente: du . | sort -nr | head -n10

Per elencare le directory più grandi dalla directory corrente: du -s * | sort -nr | head -n10

AGGIORNAMENTO In questi giorni di solito utilizzo un modulo più leggibile (come spiega Jay Chakra in un'altra risposta e lascialo fuori | head -n10, basta lasciarlo scorrere fuori dallo schermo. L'ultima riga ha il file o la directory (albero) più grande.

A volte, ad es. quando nella directory corrente sono presenti molti punti di montaggio, anziché utilizzare -xo multipli --exclude=PATTERN, è più comodo montare il filesystem su un punto di montaggio non utilizzato ( spesso /mnt ) e lavorare da lì.

Tieni presente che quando si lavora con volumi di grandi dimensioni (NFS), è possibile causare un carico sostanziale sul back-end di archiviazione (filer) durante l'esecuzione dusu molte (sotto) directory. In tal caso, è meglio considerare l'impostazione quotadel volume.


3
Per la tua prima opzione, non puoi semplicemente elencarli con ls -Sl | head?
Bernhard,

No, duattraversa l'intero albero di directory, mentre ls -S controlla solo la directory corrente.
jippie,

35

Aggiungendo alla risposta di jippie

Per elencare le directory più grandi dalla directory corrente in formato leggibile dall'uomo:

du -sh * | sort -hr | head -n10

Campione:

[~]$ du -sh * | sort -hr | head -n10
48M app
11M lib
6.7M    Vendor
1.1M    composer.phar
488K    phpcs.phar
488K    phpcbf.phar
72K doc
16K nbproject
8.0K    composer.lock
4.0K    README.md

Rende più comodo leggere :)


14

Provate ncdu, come si può dare una panoramica di utilizzo del disco. Dal suo sito Web:

Un analizzatore di utilizzo del disco con un'interfaccia ncurses, mirato ad essere eseguito su un server remoto in cui non si dispone di un'intera configurazione gaphical, ma ha a che fare con una semplice connessione SSH. 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.


3

(gnu)

du -max /dir | sort -nVisualizzerà file di grandi dimensioni e directory di grandi dimensioni, che possono essere utilizzati per identificare dove è necessario eseguire alcune operazioni di pulizia.

du -max | sort -n | tail -1000
...
46632   ./i386/update/SuSE-SLES/8/rpm/i586/kernel-source-2.4.21-138.i586.rpm
49816   ./UnitedLinux/apt/i386/RPMS.updates/k_debug-2.4.21-138.i586.rpm
679220  ./UnitedLinux/apt/i386/RPMS.updates
679248  ./UnitedLinux/apt/i386
679252  ./UnitedLinux/apt
691820  ./UnitedLinux/i586
691836  ./i386/update/SuSE-SLES/8/rpm/i586
695192  ./i386/update/SuSE-SLES/8/rpm
695788  ./i386/update/SuSE-SLES/8
695792  ./i386/update/SuSE-SLES
695804  ./i386/update
695808  ./i386
1390184 ./UnitedLinux

(So ​​che è un albero piuttosto vecchio: p)


2

Esiste un modo semplice ed efficace per trovare le dimensioni di ogni file e directory in Ubuntu:

Applicazioni> Accessori> Analizzatore utilizzo disco

in questa finestra fare clic sul pulsante "Scansione filesystem" sulla barra degli strumenti. dopo poco tempo (secondi) si ha l'utilizzo del disco di ogni directory e file.



0

Puoi provare con questo comando, elencherà tutti i file di dimensioni superiori a 20 Mb.

find / -type f -size +20000k -exec ls -lh {} \; 2> /dev/null \
  | awk '{ print $NF ": " $5 }'  | sort -hrk 2,2

3
Se il file più grande sul tuo filesystem è 20 MB, probabilmente non avresti poco spazio su disco. Almeno con qualsiasi HD fatto questo millennio
Kevin

Questo è solo un esempio, ci metti quello che vuoi. Troverà tutto più grande di 20 MB, non solo 20 MB di file.
patseb,

ls -lhallora sort?? ls -so stat -c %bprobabilmente sono migliori.
Mikel,

Non capisco Il mio esempio usa ls e ordina. Voleva trovare file su tutto il disco e non sulla directory.
patseb,

0

digitare il seguente comando

cd /

quindi digitare

du -sh * | grep G

sopra il comando mostra la quantità di memoria utilizzata da quale directory. dopodiché devi decidere quale directory o file vuoi eliminare


-2

Puoi provare con questo comando, elencherà il file di grandi dimensioni:

ls -lrS | tail -1

mostra la directory corrente, non l'intero HDD.
slm

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.