Vuoi trovare rapidamente un file o una cartella? Su Linux puoi usare il comando locate per fare delle ricerche rapide.
In questa guida ti mostrerò come usare questo comando e come sfruttare le sue opzioni per fare delle ricerche più dettagliate o modificare l’output.
Table of Contents
Sintassi del comando locate
Il comando locate su Linux ci aiuta a trovare file e cartelle. Come saprai ci sono anche altri comandi Linux creati con questo stesso scopo, un esempio è dato dal comando find (che ha un nome già abbastanza esplicativo, no?).
A differenza di find, però, il comando locate è più veloce.
Infatti laddove il comando find fa una ricerca in tutto il file system, locate, invece, effettua solo una ricerca nel database. Come vedremo in questa guida, per assicurarci che la ricerca fatta con il comando locate sia efficace, può servire aggiornare il database manualmente (vedremo come fare più avanti).
Per adesso partiamo dal capire come si usa locate.
La sintassi di base del comando è questa:
locate [opzioni] pattern
Come vedremo con degli esempi specifici, il pattern può essere il nome esatto o parte del nome del file o della cartella che vogliamo trovare.
Per esempio:
locate ricerca
Questo comando troverà tutti i file e le cartelle che hanno “ricerca” nel nome.
Passiamo subito a vedere come si usa il comando e quali sono le sue opzioni.
Casi d’uso del comando locate
Possiamo usare il comando locate di Linux per fare ricerche differenti e trovare un nome per corrispondenza parziale o esatta, una ricerca che tenga conto o ignori la presenza di minuscole o minuscole, ma anche sfruttare le regex.
Vediamo i casi più comuni in cui possiamo usare questo comando e soprattutto imparare a usare le sue opzioni.
Come cercare un file per nome (o parte del nome)
Se usiamo il comando locate senza nessuna opzione, stiamo facendo una ricerca che include tutti i file (e le cartelle) che hanno il pattern indicato all’interno del nome.
Facciamo un esempio pratico, voglio trovare tutti i file che hanno la parola “posta” al loro interno.
Uso il comando:
locate posta
I risultati che mi verranno mostrati saranno file e cartelle che contengono la parola “posta” nel nome. Questo significa che troveremo file che si chiamano esattamente “posta”, ma anche file che contengono questa parola nel nome, come:
- file-spostare
- proposta
- postalcode.
Ecco, infatti, l’output del nostro comando:
Come cercare un file per nome esatto
Abbiamo appena visto come fare a eseguire una ricerca per pattern e trovare tutti i file (e le cartelle) che hanno una determinata stringa nel nome.
E se, invece, volessimo trovare solo i file che hanno esattamente quel nome?
In questo caso abbiamo bisogno di usare un’espressione regolare insieme all’opzione -r del comando locate.
Per esempio per trovare una cartella o un file che si chiama esattamente “nuovo”, possiamo usare il comando in questo modo:
locate -r /nuovo$
In questo caso il simbolo $ indica la fine della stringa.

Suggerimento: le espressioni regolari ci vengono in contro anche nell’uso di altri comandi, ad esempio sono molto utili con il comando grep che ci permette di trovare stringhe all’interno dei file.
Come fare una ricerca ignorando maiuscole e minuscole
Se non specifichiamo diversamente, tutte le ricerche con locate vengono effettuate rispettando le maiuscole e le minuscole. Cosa vuol dire?
Se voglio cercare un file che contenga la stringa “Nuovo” (con iniziale maiuscola), dovrò indicare il pattern specificando la maiuscola.
La situazione più comune è quella in cui non ricordiamo esattamente il nome del file e vogliamo quindi fare una ricerca ignorando maiuscole e minuscole.
In questo caso ci viene in aiuto l’opzione -i.
Guardiamo come esempio il comando seguente:
locate -i nuovo
Usando questo comando stiamo cercando la stringa “nuovo” facendo una ricerca che ignora maiuscole e minuscole. Questo vuol dire che la ricerca ci darà come risultato sia la stringa tutta in minuscolo, che eventuali maiuscole.
Nel nostro esempio, infatti, abbiamo diversi file che contengono questa stringa nel nome, come:
- nuovo
- Nuovo
- documento-NUOVO
Nell’esempio qui sotto puoi vedere proprio il confronto degli output quando usiamo il comando locate con l’opzione -i (a sinistra) e quando lo usiamo senza (a destra).
Come cercare un file in base all’estensione
Le espressioni regolari che abbiamo visto prima ci permettono anche di fare ricerche differenti, ad esempio di trovare tutti i file con una determinata estensione.
Facciamo un esempio pratico, per cercare tutti i file con estensione webp useremo il comando:
locate -r '.webp$'
Ecco un esempio:

Mostrare solo i file esistenti
Come dicevamo all’inizio di questa guida, locate è un comando che riesce a fare ricerche molto rapidamente perché va a consultare il database. Questo però ha anche uno svantaggio: a volte può mostrarci anche dei risultati non validi perché ci mostra nell’output file che sono stati eliminati.
Quando succede? Questa cosa capita se il file è stato eliminato prima che il database sia stato aggiornato.
Per evitare che si verifichi questa situazione, possiamo utilizzare il comando locate con l’opzione -e che ci mostrerà solo i file effettivamente esistenti.
Vediamo un caso tipo.
Ho appena eliminato il file logo.web (usando il comando rm) e ora uso il comando locate per cercarlo.
In questo esempio vediamo che facendo la ricerca senza nessuna opzione, il file risulta nella lista, invece, se aggiungiamo l’opzione -e, il file non compare perché è stato effettivamente cancellato.
Come modificare l’output del comando locate
Se una ricerca con il comando locate ci restituisce una lista eccessivamente lunga di risultati, possiamo modificare l’output in diversi modi.
Vediamo come.
Limitare il numero di risultati
Possiamo usare l’opzione -n per mostrare solo un certo numero di risultati.
Per esempio:
locate new -n 7
Questo comando ci mostrerà solo i primi 7 risultati che corrispondono al pattern, nell’esempio “new”.

Mostrare solo il numero di risultati
Se, invece, di ottenere una lista con il percorso dei file trovati, vogliamo solo sapere quanti file (e cartelle) contengono un determinato pattern, possiamo usare l’opzione -c.
Per esempio con il comando:
locate -c new
Ci viene mostrato il numero di file e cartelle che contengono quella stringa nel nome.

Operazioni sul database da cui locate prende i dati
Come abbiamo detto in apertura, il comando locate va a fare una ricerca direttamente nel database.
Il database di default usato dal comando locate è mlocate.db o plocate.db e si trova in genere a questo percorso:
/var/lib/mlocate/mlocate.db
Oppure:
/var/lib/plocate/plocate.db
Questo database viene aggiornato periodicamente, ma se vogliamo possiamo anche aggiornarlo manualmente attraverso il comando:
sudo updatedb
Dopo il comando ci verrà richiesta la password.
Se, invece, volessimo utilizzare un database diverso, possiamo farlo sfruttando l’opzione -d.
locate -d /percorso-database/altrodb.db pattern
Dovremo indicare il percorso del database che vogliamo usare al post di questo ‘/percorso-database/altrodb.db‘.
Conclusioni
Quando vogliamo fare una ricerca di un file o di una directory da terminale, il comando più veloce da usare è locate. In questa guida ti ho mostrato come si usa il comando sia per fare una semplice ricerca che per affinare i risultati (ad esempio facendo una ricerca che non tenga conto di maiuscole e minuscole).
Avevi mai usato questo comando? Facci sapere lasciando un commento.
Lascia un commento