Während find zweifellos eines der beliebtesten und leistungsstärksten Befehlszeilen-Dienstprogramme für die Dateisuche in Linux ist, ist es nicht schnell genug für Situationen, in denen Sie sofortige Ergebnisse benötigen. Wenn Sie eine Datei auf Ihrem System über die Befehlszeile suchen möchten und Geschwindigkeit oberste Priorität hat, können Sie einen weiteren Befehl verwenden:Locate .
In diesem Tutorial besprechen wir die Ortung Befehl mit leicht verständlichen Beispielen. Bitte beachten Sie, dass alle hier erwähnten Anleitungen/Beispiele auf Ubuntu 16.04 LTS getestet wurden und locate Version, die wir verwendet haben, ist 0.26.
1. So verwenden Sie den Befehl locate unter Linux
Der Befehl „locate“ ist sehr einfach zu verwenden. Alles, was Sie tun müssen, ist, ihm den Dateinamen zu übergeben, den Sie suchen möchten.
locate [filename]
Wenn ich zum Beispiel nach allen Dateinamen suchen möchte, die die Zeichenkette „dir2“ enthalten, dann kann ich das folgendermaßen tun, indem ich locate verwende:
Hinweis :Der Befehl „locate dir2“ (keine Sternchen) funktioniert ebenfalls, da „locate“ den übergebenen Namen (z. B. NAME) implizit durch *NAME* ersetzt.
2. Wie der Befehl „locate“ funktioniert oder warum er so schnell ist
Der Grund, warum locate so schnell ist, liegt darin, dass das Dateisystem für die gesuchte Datei oder den Verzeichnisnamen nicht gelesen wird. Es bezieht sich tatsächlich auf eine Datenbank (vorbereitet durch den Befehl updatedb ), um zu finden, wonach der Benutzer sucht, und erstellt auf der Grundlage dieser Suche seine Ausgabe.
Obwohl dies ein guter Ansatz ist, hat er einige Nachteile. Das Hauptproblem besteht darin, dass Sie nach jeder neuen Datei oder jedem neuen Verzeichnis, das auf dem System erstellt wurde, die Datenbank des Tools aktualisieren müssen, damit es ordnungsgemäß funktioniert. Andernfalls kann der Befehl keine Dateien/Verzeichnisse finden, die nach der letzten Datenbankaktualisierung erstellt wurden.
Wenn ich beispielsweise versuche, im Verzeichnis „Downloads“ meines Systems Dateien mit Namen zu finden, die die Zeichenfolge „tosearch“ enthalten, wird die Datei find Befehl erzeugt ein Ergebnis in der Ausgabe:
Aber wenn ich versuche, dieselbe Suche mit dem Befehl locate durchzuführen, wird keine Ausgabe erzeugt.
Das bedeutet, dass die Suchvorgänge in der Datenbank nicht aktualisiert wurden, nachdem die Datei auf dem System erstellt wurde. Lassen Sie uns also die Datenbank aktualisieren, was mit updatedb erfolgen kann Befehl. So gehen Sie vor:
sudo updatedb
Und jetzt, wenn ich denselben locate-Befehl erneut ausführe, werden Dateien in der Ausgabe angezeigt:
Ebenso müssen Sie nach dem Entfernen einer Datei oder eines Verzeichnisses sicherstellen, dass die Locate-Datenbank aktualisiert wurde, da der Befehl andernfalls die Datei bei der Suche weiterhin in seiner Ausgabe anzeigt.
3. Wie man locate die Anzahl oder Anzahl der übereinstimmenden Einträge in der Ausgabe ausgeben lässt
Wie wir gesehen haben, erzeugt der Befehl locate den Namen der übereinstimmenden Dateien zusammen mit ihren vollständigen oder absoluten Pfaden in der Ausgabe. Aber wenn Sie möchten, können Sie das Tool dazu bringen, all diese Informationen zu unterdrücken und stattdessen nur die Anzahl oder Anzahl der übereinstimmenden Einträge auszugeben. Dies kann mit -c erfolgen Befehlszeilenoption.
4. So erzwingen Sie, dass die Suche nur die Einträge druckt, die vorhandenen Dateien entsprechen
Wie wir bereits früher in diesem Artikel besprochen haben, zeigt der Befehl, wenn eine Datei aus dem System entfernt wird, diesen Dateinamen in der Ausgabe an, bis Sie die Locate-Datenbank erneut aktualisieren. Für diesen speziellen Fall können Sie jedoch die Aktualisierung der Datenbank überspringen und mit -e immer noch korrekte Ergebnisse in der Ausgabe erhalten Befehlszeilenoption.
Zum Beispiel habe ich die Datei „filetosearch.txt“ von meinem System entfernt. Dies wurde durch den find-Befehl bestätigt, der die Datei nicht mehr durchsuchen konnte:
Aber als ich die gleiche Operation mit locate durchführte, wurde immer noch die Datei in der Ausgabe angezeigt:
Und wir wissen warum – weil die Datenbank von locate nicht aktualisiert wurde, nachdem die Datei gelöscht wurde. Verwenden Sie jedoch das -e Option hat es geschafft:
Hier ist, was die man-Seite von locate zu dieser Option sagt:"Nur Einträge drucken, die auf Dateien verweisen, die zum Zeitpunkt der Ausführung von locate vorhanden sind."
5. Wie man dafür sorgt, dass die Groß-/Kleinschreibung bei der Lokalisierung ignoriert wird
Standardmäßig wird beim Suchvorgang, den der Befehl locate durchführt, zwischen Groß- und Kleinschreibung unterschieden. Aber Sie können das Tool mit dem -i zwingen, Groß- und Kleinschreibung zu ignorieren Befehlszeilenoption.
Zum Beispiel habe ich zwei Dateien auf meinem System mit den Namen „newfiletosearch.txt“ und „NEWFILETOSEARCH.txt“. Wie Sie also sehen können, sind die Dateinamen gleich, nur dass ihre Groß- und Kleinschreibung unterschiedlich ist. Wenn Sie lokalisieren fragen um beispielsweise nach "*tosearch*" zu suchen, wird in der Ausgabe nur der Name in Kleinbuchstaben angezeigt:
Aber die Verwendung der Befehlszeilenoption -i zwingt den Befehl, die Groß-/Kleinschreibung zu ignorieren, und beide Dateinamen werden in der Ausgabe erzeugt:
6. So trennen Sie Ausgabeeinträge mit ASCII NUL
Standardmäßig werden die Ausgabeeinträge, die der Befehl locate erzeugt, durch das Zeilenumbruchzeichen (\n) getrennt. Aber wenn Sie möchten, können Sie das Trennzeichen ändern und anstelle eines Zeilenumbruchs die ASCII-NUL verwenden. Dies kann mit -0 erfolgen Befehlszeilenoption.
Zum Beispiel habe ich denselben Befehl ausgeführt, den wir im letzten Abschnitt oben verwendet haben, aber die Befehlszeilenoption -0 hinzugefügt:
Sie können also sehen, dass das Zeilenumbruchtrennzeichen nicht mehr vorhanden ist – es wurde durch NUL ersetzt.
7. So zeigen Sie Informationen über die Locate-Datenbank an
Falls Sie wissen möchten, welche Datenbank Locate verwendet, sowie andere Statistiken über die Datenbank, verwenden Sie das -S Befehlszeilenoption.
8. So suchen Sie mit locate
nach einem genauen DateinamenWenn Sie mithilfe von locate nach einem Dateinamen suchen, wird der übergebene Name - beispielsweise NAME - implizit durch *NAME* ersetzt. Wenn ich zum Beispiel nach einem Dateinamen „testfile“ suche, werden alle Namen, die mit *testfile* übereinstimmen, in der Ausgabe erzeugt:
Was aber, wenn die Anforderung darin besteht, Dateien zu suchen, deren Namen genau mit „testfile“ übereinstimmen? Nun, in diesem Fall müssen Sie reguläre Ausdrücke verwenden, die mit -r aktiviert werden können Befehlszeilenoption. So können Sie mit regulären Ausdrücken nur nach „testfile“ suchen:
locate -r /testfile$
Wenn Sie mit regulären Ausdrücken noch nicht vertraut sind, gehen Sie hierhin.
Schlussfolgerung
Locate bietet viel mehr Optionen, aber die hier besprochenen sollten ausreichen, um Ihnen eine grundlegende Vorstellung über das Befehlszeilenprogramm zu geben und Ihnen den Einstieg zu erleichtern. Wir empfehlen Ihnen, zuerst alle hier beschriebenen Optionen auf Ihrem Linux-Rechner auszuprobieren und dann auf andere umzusteigen, die Sie auf der Manpage des Tools finden.
Bei Zweifeln oder Fragen können Sie gerne einen Kommentar hinterlassen.