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