Skip to main content
  1. Comandi/

locate - find files by name (database search)

·3 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cosa fa
#

Cerca file nel filesystem tramite un database pre-costruito di tutti i pathname del sistema. Velocissimo perche' non legge il disco in tempo reale — cerca nell'indice. Il database viene aggiornato periodicamente da updatedb, solitamente come cron job notturno.

Sintassi
#

locate [opzioni] pattern

Comandi essenziali
#

ComandoFlagSignificato flagCosa fa
locate nomefileCerca tutti i path che contengono "nomefile"
locate bin/zipCerca path che contengono esattamente "bin/zip"
locate -i nomefile-iignore caseRicerca case-insensitive
locate -c nomefile-ccountConta i risultati invece di stamparli
locate -l 10 pattern-llimitMostra massimo 10 risultati
locate -r "\.log$"-rregexCerca con espressione regolare
sudo updatedbAggiorna il database manualmente

Installazione su Ubuntu Server
#

# locate non e' installato di default su Ubuntu Server
sudo apt install plocate   # versione moderna (preferita)
# oppure
sudo apt install mlocate   # versione classica

# Aggiorna il database subito dopo l'installazione
sudo updatedb

locate vs find
#

locate                          find
────────────────────────        ──────────────────────────────────
cerca in un database            cerca in tempo reale sul disco
velocissimo                     piu' lento (legge il filesystem)
potrebbe non trovare            trova tutto, anche appena creato
file creati di recente          —
nessun filtro su size/perms     filtri avanzati (size, time, perm)
non richiede root               alcune ricerche richiedono sudo

Regola pratica: usa locate per trovare velocemente file di sistema che sai esistere. Usa find quando hai bisogno di filtri avanzati o stai cercando file appena creati.

Il database updatedb
#

# Il database e' in:
/var/lib/plocate/plocate.db   # plocate
/var/lib/mlocate/mlocate.db   # mlocate

# Aggiornamento automatico — cron job notturno
cat /etc/cron.daily/plocate   # vedere quando viene eseguito

# Aggiornamento manuale
sudo updatedb

# File creati oggi, prima dell'aggiornamento, non vengono trovati
# Soluzione: sudo updatedb prima di cercare

Combinazioni utili
#

# Trova tutti i file di configurazione nginx
locate nginx.conf

# Cerca e filtra con grep
locate zip | grep bin
locate ".conf" | grep /etc/

# Case-insensitive
locate -i "readme"

# Conta quante librerie ssl sono installate
locate -c libssl

# Regex — trova tutti i file .log in /var
locate -r "/var/.*\.log$"

Dove l'ho usato
#

  • Cap 17 TLCL — ricerca file

Note personali
#

Note

plocate e' la versione moderna di mlocate — usa un formato di database compresso e cerca molto piu' velocemente. Su Ubuntu moderno usa sempre plocate.

Tip

Se locate nomefile non trova niente ma sei sicuro che il file esiste, fai sudo updatedb e riprova — probabilmente il file e' stato creato dopo l'ultimo aggiornamento notturno del database.


## Collegato a

- system — categoria
- [find](/comandi/find/) — alternativa piu' potente per ricerche avanzate

Related