In una qualunque giornata iniziata bene, vi siete accorti che lo spazio del vostro hard disk è pieno, e che purtroppo non avete più spazio libero per salvare i dati del gestionale o per registrare i logs di sistema. In questa situazione abbastanza paradossale volete capire quali sono quei files che occupano più spazio, al fine di eliminarli o di spostarli per liberare spazio nel vostro sistema. Per risolvere questo tipo di problema avete a disposizione un comando potentissimo presente in tutte le distribuzioni GNU/Linux, e cioè l’utility Find.
Un semplice utilizzo del comando find
Partendo dalle basi, e quindi da un semplice utilizzo del comando find, per trovare un file potete digitare da shell con utente root, o con l’opzione sudo, il seguente comando:
# find -name termine_di_ricerca
L”opzione -name indica che il nome del file da trovare si chiama “termine_di_ricerca“.
Ad un passo successivo, sempre con l’utente root, o con l’opzione sudo, un interrogazione un po’ più complessa potrebbe essere utilizzata per trovare quei file superiori a un certo numero di Megabyte e quindi potreste digitare il seguente comando:
# find / -type f -size +4096k
In particolare, al comando find gli si dice di trovare quei file più grandi di 4 Mb (segno +) ossia 4096k (1024k = 1 Mb) e l’opzione type f specifica di non includere nella ricerca i file dei dispositivi di blocco.
Affinando di più la ricerca, si può scrivere in un file di appoggio l’elenco dei files trovati, come specificato dal comando seguente:
# find / -type f -size +102400k > /home/filemaggiori100Mb
Andando a leggere il file “filemaggiori100Mb” nella directory /home con il comando cat si possono scorrere quei file che soddisfano i requisiti di ricerca elaborati nel comando find ed in seguito deciderne l’eliminazione per liberare spazio su disco.
Continuando a discutere di find, possiamo decidere di eliminare in una determinata cartella quei files con una dimensione superiore ai 4 Mb utilizzando il comando find con l’opzione exec.
Facciamo un esempio:
# find /home/cippopippo/ -type f -size +4096k -exec rm {} \;
Il comando find cerca quei file nella cartella cippopippo superiori di 4 Mb e li cancella (-exec rm). In questo caso tutto diventa automatico, ma bisogna fare attenzione a non eliminare i file importanti.
Aumentando ancora la complessità dell’interrogazione possiamo formulare un comando che trovi quei files appartenenti ad un utente, presenti all’interno della directory cippopippo, superiori a 4096k ed eliminiamoli automaticamente (più opzione -user).
# find /home/cippopippo/ -type f -size +4096k -user ruggero | xargs rm
Il comando è uguale al precedente ma ho aggiunto l’opzione -user ruggero che specifica di eliminare quei file superiori a 4096k appratenti all’utente ruggero presenti nella cartella /home/cippopippo. In questo comando ho utilizzato il comando xargs e rm insieme. Xargs è un comando che permette di filtrare e eseguire più comandi contemporaneamente e normalmente legge dallo standard input o da una pipe (come nel nostro caso), ma anche dall’output di un file. Il comando rm è invece un comando che permette di cancellare i files.