Was ist der Unterschied zwischen 'locate' und 'find' in Linux?

41

Warum gibt es zwei so ähnliche Befehle in Linux? und normalerweise, unter welchen Umständen, sollte jeder von ihnen verwendet werden?

zhanwu
quelle
5
Weitere ausführliche und vollständige Antworten finden Sie in dieser Antwort unter Unix & Linux .
Der Brasilianer

Antworten:

38

findsucht im realen System. Ist langsamer aber immer aktuell und hat mehr Optionen (Größe, Änderungszeit, ...)

locateverwendet eine zuvor erstellte Datenbank (Befehl updatedb). Ist viel schneller, verwendet aber eine 'ältere' Datenbank und sucht nur nach Namen oder Teilen davon.

In jedem Fall man findund man locatehilft Ihnen weiter.

Eumiro
quelle
1
... und updatedbmach ungefähr so ​​was wie find / -type f | gzip > locate.gz.
F. Hauri
10
unix.stackexchange.com/questions/60205/… beantwortet diese Frage genauer.
verrückt nach natty
3

Sowohl die locateund findBefehle eine Datei finden, aber sie arbeiten auf ganz unterschiedliche Weise.

locate wird in einem Offline-Modus arbeiten:

  • Zur einfachen Erklärung listet die Dateiindexdatenbank im Unix-System mit dem Namen slocate die Speicherorte aller Dateien auf, die im Lieferumfang des Unix-Systems enthalten sind. Bei der Ausführung locatewird diese Datenbank verwendet, um nach einer bestimmten Datei zu suchen. Das Problem dabei locateist, dass locate nicht funktioniert, wenn Sie gerade eine Datei erstellt haben, nach der Sie jetzt suchen möchten, da die Datenbank slocate nicht auf dem neuesten Stand ist. Um dieses Problem zu beheben, können Sie updatedbdie Datenbank slocate aktualisieren . Bei locateerneuter Ausführung wird nun die neu erstellte Datei gefunden. Daher verwenden viele Linux-Systemadministratoren einen cronJob, um die Datenbank slocate regelmäßig zu aktualisieren .

find wird in einem Online / "in Echtzeit" -Modus arbeiten.

  • Tatsächlich durchsucht es alle Verzeichnisse, um die angegebene Datei zu finden, und untersucht jede Datei nacheinander. Daher sind viele E / A-Aufrufe erforderlich.

Aufgrund der Natur ist es klar, dass das Auffinden schneller ist als das Finden, das Finden jedoch in Echtzeit.

Hoffe, dies wird helfen, die Idee zu klären. Alles Gute. :)

Kazi Tanvir Ahsan
quelle
0

locate schaut einfach in die Datenbank und meldet den Speicherort der Datei.

find verwendet keine Datenbank, durchsucht alle Verzeichnisse und deren Unterverzeichnisse und sucht nach Dateien, die dem angegebenen Kriterium entsprechen.

anchal
quelle
0

Eine Alternative zur Verwendung von find ist der Befehl locate. Dieser Befehl ist häufig schneller und kann das gesamte Dateisystem mühelos durchsuchen. Sie können den Befehl mit apt-get installieren:

sudo apt-get update
sudo apt-get install mlocate

Der Grund dafür, dass die Suche schneller ist als die Suche, liegt darin, dass eine Datenbank der Dateien im Dateisystem verwendet wird. Die Datenbank wird normalerweise einmal täglich mit einem Cron-Skript aktualisiert. Sie können sie jedoch manuell aktualisieren, indem Sie Folgendes eingeben:

sudo updatedb

Führen Sie diesen Befehl jetzt aus. Denken Sie daran, dass die Datenbank immer auf dem neuesten Stand sein muss, wenn Sie kürzlich erfasste oder erstellte Dateien suchen möchten.

m-tech
quelle