Cercar fitxers a LinuxComandes LinuxLinux

La comanda locate a Linux: trobar fitxers pel nom en un instant



La comanda locate troba fitxers pel nom de manera gairebé instantània, encara que busquis per tot el disc. El truc és que no recorre els directoris com fa find: consulta una base de dades amb tots els noms de fitxer del sistema, que s’actualitza periòdicament. Per això és molt ràpida, però també pot estar desactualitzada.

Quin locate tens

Hi ha hagut diverses implementacions: slocate, mlocate i, ara, plocate, que és la que fan servir les distribucions actuals (Debian, Ubuntu, Fedora…) i que ha substituït mlocate. Totes s’invoquen amb locate i accepten les opcions bàsiques. Si no la tens:

sudo apt install plocate     # Debian, Ubuntu
sudo dnf install plocate     # Fedora, Rocky, AlmaLinux

Just després d’instal·lar-la, crea la primera base de dades amb sudo updatedb (si no, locate no trobarà res fins a la primera actualització automàtica). A partir d’aquí s’actualitza cada dia sola (amb un temporitzador de systemd, plocate-updatedb.timer, o una tasca de cron.daily, segons la distribució).

Sintaxi

locate [opcions] patró...

Sense comodins, locate mostra totes les rutes que contenen el patró en qualsevol lloc, no només al nom del fitxer. Amb comodins (*, ?), el patró ha de coincidir amb la ruta sencera.

Opcions més útils

OpcióQuè fa
-iNo distingeix majúscules i minúscules
-bBusca només al nom del fitxer, no a la ruta dels directoris
-cMostra quants resultats hi ha, en lloc de llistar-los
-l NMostra com a màxim N resultats
-eNomés mostra fitxers que encara existeixen ara
-r patróEl patró és una expressió regular bàsica
--regex patróEl patró és una expressió regular estesa (amb alternatives, +, ?…)
-0Separa els resultats amb un caràcter nul (per a xargs -0)
-d fitxerFa servir una altra base de dades

Exemples

Buscar un fitxer pel nom:

$ locate informe.txt
/home/oscar/Documents/informe.txt

Sense distingir majúscules (troba també Informe_2025.TXT):

$ locate -i informe
/home/oscar/Documents/Informe_2025.TXT
/home/oscar/Documents/informe.txt

Amb comodins. Posa el patró entre cometes perquè el shell no l’expandeixi:

locate '*.html'
locate '/var/www/*.html'

Comptar resultats:

$ locate -c html
2

Fitxers .txt o .csv. Fixa’t que per fer servir | cal --regex; amb -r, que és regex bàsica, no funcionaria:

$ locate --regex '\.(txt|csv)$'
/home/oscar/Documents/informe.txt
/home/oscar/Documents/feina/dades.csv

Buscar un directori pel nom, sense que surti tot el que conté:

locate -b feina

Només els primers resultats:

locate -l 5 nginx.conf

Actualitzar la base de dades

Si acabes de crear un fitxer, locate no el trobarà fins que s’actualitzi la base de dades. I si l’has esborrat, encara sortirà. Per actualitzar-la a mà:

sudo updatedb

O, per amagar els fitxers que ja no existeixen sense esperar, locate -e:

$ rm web/error.log
$ locate error.log
/home/oscar/web/error.log
$ locate -e error.log
$

Quins directoris i sistemes de fitxers s’indexen es configura a /etc/updatedb.conf. Per defecte, s’exclouen /tmp, /media, els sistemes de fitxers de xarxa (NFS, CIFS…) i els virtuals (proc, sysfs…), de manera que els fitxers de discos USB o carpetes compartides no hi surten.

Compte amb…

  • Patró sense comodins = cerca dins de tota la ruta: locate web mostra tots els fitxers que hi ha dins de qualsevol directori que es digui web. Fes servir -b si només t’interessa el nom.
  • Només veus el que pots llegir: plocate només mostra els fitxers dels directoris als quals tens accés com a usuari, encara que la base de dades els contingui tots.
  • L’opció -e no exclou res: en algunes guies es fa servir com si volgués dir «excepte». No: vol dir existing, «només els que existeixen». Per excloure resultats, encadena-ho amb grep -v: locate '*.log' | grep -v '/journal/'.

locate o find?

  • locate: cerques per nom, ràpides, a tot el sistema, quan no importa que el resultat sigui d’ahir.
  • find: quan necessites l’estat actual del disc, o filtrar per mida, data, permisos o propietari, o fer alguna cosa amb els resultats.

Comandes relacionades

  • find: cerca en temps real amb molts criteris.
  • which: quin executable s’executa per a una comanda.
  • whereis: on són el binari i la pàgina de manual d’una comanda.
  • grep: filtrar els resultats.