fb-pixel

Come trovare i file velocemente con il comando locate su Linux

Pubblicato in:

by:

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.

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:

Comando Locate Ricerca Pattern

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.

Locate Opzione R

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).

Locate Utilizzo Opzione I

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:

Locate Regex Ricerca Per Estensione

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.

Comando Locate Linux Opzione E

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”.

Comando Locate Opzione N

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.

Locate Opzione C

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.


Prova gratis e senza impegno uno dei nostri piani hosting per 14 giorni. Non è richiesto nessun dato di pagamento!

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *