Befehl 'lokalisieren' im Terminal. Warum ist es so schnell?

7

Die Suche nach einem Schlüsselwort im Linux-Terminal mit dem locateBefehl gibt in kurzer Zeit eine Antwort. Was ist der verwendete Suchalgorithmus?

algosig
quelle

Antworten:

9

Das System erstellt eine Datenbank aller Dateien auf dem Computer. Wenn Sie also durchsuchen, locateüberprüft der Befehl nicht wirklich das gesamte Dateisystem, sondern nur die Datenbank. Er führt einen binären Suchalgorithmus aus, der schnell wie das Nachschlagen eines Wortes in einem Wörterbuch ist. Deshalb ist es so schnell (und praktisch).

Diese Datenbank wird regelmäßig aktualisiert. Möglicherweise haben Sie manchmal gesehen, dass es funktioniert, wenn Sie ein neues Paket installieren : updating mlocate.... Weitere Informationen zur Funktionsweise finden Sie in einem Terminal:

man locate

man updatedb
animaletdesequia
quelle
Es ist auch fehlerhaft
Thufir
Es ist also wie mit dem Windows-
Suchindexer
Ich sehe keine binäre Suche in anonscm.debian.org/cgit/collab-maint/mlocate.git/tree/src/… , aber mir fehlt möglicherweise etwas. Dieser Code scheint nur über jeden Datenbankeintrag zu iterieren.
Adam Monsen
4

Es verwendet eine Datenbank. Die standardmäßig durchsuchte Datenbank befindet sich unter:

/var/lib/mlocate/mlocate.db

Nachteil der Lokalisierung ist, dass es NICHT Echtzeit ist.

Von der Manpage:

BESCHREIBUNG find liest eine oder mehrere Datenbanken, die von updateb (8) erstellt wurden, und schreibt Dateinamen, die mindestens einem der MUSTER entsprechen, zur Standardausgabe, eine pro Zeile.

Rinzwind
quelle