Wie verwende ich den Befehl locate in einem angegebenen Verzeichnis?
16
Ich benutze den locateBefehl unter Linux. Meine derzeitige Verwendung durchsucht das gesamte Dateisystem. Ich möchte nur in einem bestimmten Verzeichnis suchen. Wie kann ich das machen?
TLDR: Hier ist ein Terminal-Alias, mit dem Sie locatein einem bestimmten Verzeichnis suchen können: alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " Sobald der Alias wirksam ist, geben Sie den Terminaltyp ein my_locate *foo*und Sie können loslegen. Sie können Datenbankaktualisierungen verketten und nach Suchen suchen, indem Sie den Doppelpunkt zum Verketten von Datenbanken verwenden. rtfm: linux.die.net/man/8/updatedb
Eric Leschinski
Antworten:
11
Ein anderer Ansatz wäre die Verwendung des Mustervergleichs in locate:
locate '/some/directory/*filename*'
Vergleichen Sie die Ausgabe der folgenden Befehle:
+1 Dies ist die richtige Antwort. Beachten Sie, dass durch das Einfügen des Platzhalters die Grenzen festgelegt werden. Das heißt, im obigen Beispiel $ locate '/usr/lib64/*tmpfile'werden keine Ergebnisse zurückgegeben.
Xofer
Wenn Sie mehr Kontrolle wünschen, als einfache Platzhalter bieten können, können Sie die Ergebnisse von locatethrough immer weiterleiten grep.
Ladadadada
5
Erstellen Sie eine Slocate-Datenbank für Ihr spezifisches Verzeichnis mit:
updatedb -U /path/to/directory
und suche mit:
locate <search_string>
AKTUALISIEREN
Dies funktioniert gut auf meinem Gentoo-System, aber CentOS enthält keine -UOption. Sie können es also stattdessen unten versuchen:
"locate -U" gibt einen ungültigen Optionsfehler aus ... Sie meinen wohl "updatedb -U"? Gut zu wissen, dass dies eine Neuerstellung von mlocate.db (updatedb) erfordert, wenn Sie jemals ein anderes Verzeichnis durchsuchen möchten.
gharper
Oh, auf meinem Gentoo funktioniert es gut, aber CentOS enthält diese Option nicht.
Quanten
Stimmen Sie ab? Könnten Sie bitte einen Kommentar hinterlassen?
locate
in einem bestimmten Verzeichnis suchen können:alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db "
Sobald der Alias wirksam ist, geben Sie den Terminaltyp einmy_locate *foo*
und Sie können loslegen. Sie können Datenbankaktualisierungen verketten und nach Suchen suchen, indem Sie den Doppelpunkt zum Verketten von Datenbanken verwenden. rtfm: linux.die.net/man/8/updatedbAntworten:
Ein anderer Ansatz wäre die Verwendung des Mustervergleichs in
locate
:Vergleichen Sie die Ausgabe der folgenden Befehle:
locate /usr/lib*tmpfile*
gibt das gleiche Ergebnis.quelle
$ locate '/usr/lib64/*tmpfile'
werden keine Ergebnisse zurückgegeben.locate
through immer weiterleitengrep
.Erstellen Sie eine Slocate-Datenbank für Ihr spezifisches Verzeichnis mit:
und suche mit:
AKTUALISIEREN
Dies funktioniert gut auf meinem Gentoo-System, aber CentOS enthält keine
-U
Option. Sie können es also stattdessen unten versuchen:Erstellen Sie die Datenbank mit:
und suche:
quelle
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted
, überprüfen Sie, wie Sie den Befehl updatedb als gewöhnlicher Benutzer unter Linux verwenden können .Die einfachste Antwort, die ich mir vorstellen kann, ist
Die bessere Lösung könnte darin bestehen, "find" und seine Pfadoptionen zu verwenden ...
quelle
Der einfachste Weg ist wie im folgenden Beispiel:
Wechseln Sie
$PWD
in Ihr spezielles Verzeichnis.Im obigen Beispiel wird Ihre lokale Datenbank nur für das bestimmte Verzeichnis erstellt.
quelle