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#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
locate nomefile | — | — | Cerca tutti i path che contengono "nomefile" |
locate bin/zip | — | — | Cerca path che contengono esattamente "bin/zip" |
locate -i nomefile | -i | ignore case | Ricerca case-insensitive |
locate -c nomefile | -c | count | Conta i risultati invece di stamparli |
locate -l 10 pattern | -l | limit | Mostra massimo 10 risultati |
locate -r "\.log$" | -r | regex | Cerca con espressione regolare |
sudo updatedb | — | — | Aggiorna 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 updatedblocate 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 sudoRegola 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 cercareCombinazioni 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#
plocate e' la versione moderna di mlocate — usa un formato di database compresso e cerca molto piu' velocemente. Su Ubuntu moderno usa sempre plocate.
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

