Das Suchprogramm durchsucht eine Datenbank nach allen Pfadnamen, die dem angegebenen Muster entsprechen. Die Datenbankdatenbank wird regelmäßig (normalerweise wöchentlich oder täglich) neu berechnet und enthält die Pfadnamen aller Dateien, auf die öffentlich zugegriffen werden kann .
Versuchen Sie mdfind statt finden
Aktualisiert2:
mdfind -name Text, der genauer ist. Nur mdfind Text gibt Ihnen Dateien, die auch Text enthalten. - David Krmpotic
$ ls -la /var/db/locate.database -r - r - r-- 1 niemand Rad 19463861 6. April 20:08 /var/db/locate.database $ find david.jpg / Users / david / temp /david.jpg
davidhq
1
Sie sollten Ihre Antwort aktualisieren, mdfind -name textdie genauer ist. Nur mdfind textgibt Ihnen Dateien , die enthalten Text als auch.
Davidhq
3
Berechtigungen können der Schuldige sein, da locate anscheinend keine Dateien lesen kann, die nicht weltweit lesbar sind. Weitere Erklärungen finden Sie in dieser Antwort von Plundra .
Das findutils- Paket von homebrew aktiviert gupdatedbund glocatebefiehlt Befehle, die einige der Einschränkungen der integrierten Dienstprogramme zu überwinden scheinen.
Vielen Dank! Aber jetzt, wo ich weiß, mdutilmacht es Sinn, dies zu überprüfen? Ein Anwendungsfall, den ich mir vorstellen kann, ist, dass ich das erneute Scannen manuell auslösen kann gupdatedb- mit Spotlight nicht so einfach oder es würde länger dauern (es indiziert auch den Inhalt von Dateien). Gibt es noch andere Vorteile?
Davidhq
1
Die Neuindizierung mit mdutil / spotlight kann mit Sicherheit eine Weile dauern. updatedbist dafür schneller. glocatescheint kein Problem damit zu haben, Systemdateien zu indizieren, während ich finde, dass mdfind~ / Library und andere Systemdateien ignoriert werden. Ich finde definitiv, dass ich unter den meisten Umständen mehr Hits mit glocateOver bekomme mdfind. YMMV.
VogonPoetLaureate
ok, ich teste das jetzt. Ich glaube, ich habe ein Problem gefunden ... Faust lief ich sudo gupdatedbund speicherte dann die glocate RadiumAusgabe. Dann rannte ich gupdatedbund es stand : /.Trashes: Permission denied, das gleiche für einige andere Ordner. Ich habe die Ausgabe für beide verglichen und es war das gleiche! Seltsam ...
Davidhq
Nach dem, was Sie sagen, haben Sie zuerst ausgeführt sudo gupdatedb(als Root ausgeführt) und später gupdatedbals normaler Benutzer ausgeführt, der keinen Zugriff auf die Dateien hat, auf die der Root-Benutzer Zugriff haben würde, was bedeutet, dass Sie diese erhalten würden Erlaubnis verweigert Fehler. Wenn Sie eine vollständige Datenbank mit Dateinamen für Ihr gesamtes System benötigen, führen Sie diese weiterhin als Root aus. Dadurch werden Ihre Dateien anderen Benutzern im System zugänglich gemacht, die den glocateBefehl möglicherweise verwenden . Aber wenn Sie der einzige Benutzer sind, sollte das in Ordnung sein.
VogonPoetLaureate
2
Wenn Sie dieselbe Datenbank durchsuchen möchten, die Spotlight verwendet, können Sie den mdfindBefehl als Alternative (obwohl kein exakter Ersatz) für Folgendes verwenden locate:
#SEARCHPATHS="/"
in der Konfiguration nicht kommentiert, es hat nicht geholfen.-v
Option scheint keine zusätzliche Ausgabe zu produzieren: /mdfind -name text
die genauer ist. Nurmdfind text
gibt Ihnen Dateien , die enthalten Text als auch.Berechtigungen können der Schuldige sein, da locate anscheinend keine Dateien lesen kann, die nicht weltweit lesbar sind. Weitere Erklärungen finden Sie in dieser Antwort von Plundra .
Das findutils- Paket von homebrew aktiviert
gupdatedb
undglocate
befiehlt Befehle, die einige der Einschränkungen der integrierten Dienstprogramme zu überwinden scheinen.quelle
mdutil
macht es Sinn, dies zu überprüfen? Ein Anwendungsfall, den ich mir vorstellen kann, ist, dass ich das erneute Scannen manuell auslösen kanngupdatedb
- mit Spotlight nicht so einfach oder es würde länger dauern (es indiziert auch den Inhalt von Dateien). Gibt es noch andere Vorteile?updatedb
ist dafür schneller.glocate
scheint kein Problem damit zu haben, Systemdateien zu indizieren, während ich finde, dassmdfind
~ / Library und andere Systemdateien ignoriert werden. Ich finde definitiv, dass ich unter den meisten Umständen mehr Hits mitglocate
Over bekommemdfind
. YMMV.sudo gupdatedb
und speicherte dann dieglocate Radium
Ausgabe. Dann rannte ichgupdatedb
und es stand :/.Trashes: Permission denied
, das gleiche für einige andere Ordner. Ich habe die Ausgabe für beide verglichen und es war das gleiche! Seltsam ...sudo gupdatedb
(als Root ausgeführt) und spätergupdatedb
als normaler Benutzer ausgeführt, der keinen Zugriff auf die Dateien hat, auf die der Root-Benutzer Zugriff haben würde, was bedeutet, dass Sie diese erhalten würden Erlaubnis verweigert Fehler. Wenn Sie eine vollständige Datenbank mit Dateinamen für Ihr gesamtes System benötigen, führen Sie diese weiterhin als Root aus. Dadurch werden Ihre Dateien anderen Benutzern im System zugänglich gemacht, die denglocate
Befehl möglicherweise verwenden . Aber wenn Sie der einzige Benutzer sind, sollte das in Ordnung sein.Wenn Sie dieselbe Datenbank durchsuchen möchten, die Spotlight verwendet, können Sie den
mdfind
Befehl als Alternative (obwohl kein exakter Ersatz) für Folgendes verwendenlocate
:quelle