Come trovare un file per nome su Linux dal terminale
Con find e locate, e quando usare ciascuno.
find / -iname "*rapporto*" 2>/dev/null
-iname cerca senza distinguere maiuscole e minuscole
(più flessibile di -name). Il 2>/dev/null
nasconde gli avvisi di "permesso negato" nelle cartelle di sistema a
cui non hai accesso, lasciando solo i risultati utili.
Più veloce per l'uso quotidiano: locate
sudo apt install mlocate
sudo updatedb
locate rapporto
locate è molto più veloce di find perché
consulta un indice già costruito, invece di scorrere il disco in quel
momento — ma proprio per questo non trova i file creati dopo l'ultimo
aggiornamento di quell'indice (con updatedb, che viene
eseguito automaticamente ogni giorno).
Consiglio: usa find se ti servono
risultati garantiti all'istante (inclusi file creati un minuto fa);
usa locate per ricerche rapide quotidiane dove non
importa che l'indice abbia qualche ora.
Domande frequenti
Perché locate non trova un file che ho appena creato?
Perché locate consulta un indice che si aggiorna periodicamente (di solito una volta al giorno), non in tempo reale. Esegui 'sudo updatedb' manualmente per forzare un aggiornamento immediato.
Perché find mostra tanti errori di 'permesso negato'?
Perché cerca di cercare in cartelle di sistema a cui il tuo utente non ha accesso. Aggiungere '2>/dev/null' alla fine del comando nasconde quegli avvisi, lasciando solo i risultati utili.