Introduzione

In questo articolo vedremo come effettuare delle ricerche per individuare determinati file o directory all'interno del nostro file system.
Per cercare e trovare dei file su Linux esistono diversi comandi.

Cercare un file con il comando locate

Uno dei comandi più utilizzati per cercare file o directory è il comando locate che effettua ricerche sulla base del nome dei file. Dovreste visualizzare una lista di file e directory che contengono nel loro nome e percorso la parola cercata:

locate nomefile

Il comando locate non effettua una ricerca real-time tra i file del sistema, ma effettua una ricerca in un database contenente informazioni sui files presenti nella nel sistema. Quindi è necessario aggiornare frequentemente questo database utilizzando il seguente comando:

updatedb

Cercare un file con il comando find

Altro comando utile è find che ci consente di ricercare file e directory in base al nome, alla data di creazione o alla sua dimensione.
Per cercare un file nel sistema utilizzare il comando find.
Un esempio per la ricerca di un file nel sistema, da terminale:

find /home/user -type f

Questo comando cercherà tutti i file situati in /home/user. Il comando find è estremamente potente e può essere personalizzato con una serie di comandi per rendere la ricerca ancora più dettagliata.

Per cercare in tutto il sistema un file specifico:

find / -name nomefile.txt

Per cercare in base alla data di creazione del file usare l'opzione -ctime seguita dall'età (espressa in giorni) del file da cercare.
Ad esempio per cercare un file creato 6 giorni fa in un percorso specifico:

find /var/www/html -ctime 7

Se si desidera cercare file più grandi di una determinata dimensione, è possibile utilizzare:

find . -type f -size 10M

Il comando precedente cercherà dalla directory corrente per tutti i file che superano i 10 MB. Assicurati di non eseguire il comando dalla directory root del tuo sistema Linux in quanto ciò potrebbe causare un elevato I/O del sistema.

Una delle combinazioni più frequentemente utilizzate è l'opzione “exec" che permette in di eseguire alcune azioni sui risultati del comando find.

Ad esempio, se vogliamo trovare tutti i file in una directory e modificare le loro autorizzazioni. Questo può essere fatto con:

find /home/user/files/ -type f -exec chmod 644 {} \;

Il comando precedente cercherà ricorsivamente tutti i file nella directory specificata e eseguirà il comando chmod sui file trovati.

Cercare un file con il comando grep

Con grep è possibile cercare i file che contengono una determinata parola o una determinata stringa di testo:

grep index *.html

Grazie a questa sintassi verrà cercata la stringa "index" tra tutti i file .html (l'asterisco indica "qualsiasi cosa" ed è utilizzato, in questo esempio, per cercare ogni files con estensione .html).

Come risultato della ricerca avremo anche tutto ciò che è compreso tra la parola index e .html.

Per ricevere come risultato solo la parola specifica utilizzare il parametro -w:

grep -w "index" *.html