Introduzione

Con il passare del tempo l'unità disco potrebbe finire lo spazio disponibile a causa di molti file non necessari che occupano grandi quantità di spazio su disco. Di solito, i sistemi Linux esauriscono lo spazio su disco a causa di file di log o di backup di grandi dimensioni.

Questo tutorial spiega come trovare i file e le directory più grandi nei sistemi Linux usando i comandi find e du.

Trovare file di grandi dimensioni utilizzando il comando find

Il comando find è uno degli strumenti più potenti degli amministratori di sistema di Linux. Permette di cercare file e directory in base a diversi criteri tra cui la dimensione del file.
Ad esempio, se si desidera cercare file con dimensioni superiori a 100 MB, nella directory di lavoro corrente si utilizzerà il comando seguente:

sudo find . -xdev -type f -size +100M

Sostituisci . con il percorso della directory in cui desideri cercare i file più grandi

L'output mostrerà un elenco di file senza ulteriori informazioni.

/var/lib/libvirt/images/archlinux.img
/var/lib/libvirt/images/slackware.img

Il comando find può anche essere utilizzato in combinazione con altri strumenti come ls o sort per eseguire operazioni su tali file.

Nell'esempio seguente, utilizziamo il comando ls insieme al comando find così da stampare una lista di tutti file con le rispettive dimensioni e ordiniamo la lista in base alla quinta colonna che è la dimensione del file utilizzando il comando sort.

find . -xdev -type f -size +100M -print | xargs ls -lh | sort -k5,5 -h -r

L'output sarà simile al seguente:

-rw-------  1 root   root 40967M Sep  6 11:42 /var/lib/libvirt/images/archlinux.img
-rw-------  1 root   root  3725M Sep  6 13:19 /var/lib/libvirt/images//slackware.img

Analizziamo il comando:

  • find . -xdev -type f -size +100M -print Cerca solo i file ( -type f ) nella directory di lavoro corrente (.), maggiore di 100 MB (  -size +100M ), non discendere le directory su altri filesystem ( -xdev ) e stampare il nome completo del file sullo standard output, seguito da una nuova riga ( -print ) .
  • xargs ls -lh L'output del comando find viene inviato al xargs che esegue il comando ls -lh e verrà stampato l'output in un formato leggibile.
  • sort -k5,5 -h -r Ordina le righe in base alla quinta colonna ( -k5,5), confronta i valori in un formato leggibile dall'uomo ( -h ) e inverti il ​​risultato ( -r ).
  • head Stampa solo le prime 10 righe dell'output convogliato.

Il comando find viene fornito con molte opzioni potenti. Ad esempio, è possibile cercare file di grandi dimensioni più vecchi di x giorni, file di grandi dimensioni con un'estensione specifica o file di grandi dimensioni che appartengono a un determinato utente.

Trovare file e directory di grandi dimensioni utilizzando il comando du

Il comando du viene utilizzato per stimare l'utilizzo dello spazio dei file ed è particolarmente utile per trovare directory e file che consumano grandi quantità di spazio su disco.

Il seguente comando stamperà i file e le directory più grandi:

du -ahx . | sort -rh | head -5

La prima colonna include la dimensione del file e la seconda il nome del file:

55G	.
24G	./.random.d/linux
24G	./.random.d
13G	./Articoli
5.2G	./.news

Spiegazione del comando:

  • du -ahx .  Stima l'utilizzo dello spazio su disco nella directory di lavoro corrente ( . ), conta sia i file che le directory ( a ), stampa le dimensioni in un formato leggibile dall'uomo ( h ) e salta le directory su diversi file system ( x ).
  • sort -rh  ordina le righe confrontando i valori in un formato leggibile ( -h ) e invertendo il risultato ( -r ).
  • head -5 stampa solo le prime 5 righe dell'output convogliato.

Il comando du include altre opzioni che è possibile utilizzare per perfezionare il risultato.

Conclusione

Trovare file di grandi dimensioni è molto utile quando il disco è pieno e si desidera liberarlo.