Ich frage mich, ob es eine Möglichkeit gibt, die find
Geschwindigkeit im Terminal zu erhöhen . Es macht keinen Sinn, dass die Verwendung von Internet-Google für die Suche eine bessere Geschwindigkeit bietet als die lokale Suche nach Zeichenfolgen oder nur nach Dateinamen.
Ich frage mich, ob es eine Möglichkeit gibt, eine lokale Indizierungsbasis zu haben, wenn sie einmal erstellt wurde. In Zukunft könnte der Befehl find superschnell sein.
Oder irgendwelche anderen Vorschläge?
Vielen Dank!
Antworten:
Versuchen Sie es mit
locate
, es sollte tun, was Sie wollen.quelle
locate
(normalerweiseslocate
) es stammt, und esupdatedb
für die Neuerstellung der Datenbank zu verwenden. :-)Dies hängt stark von Ihrem Suchkriterium ab.
Wenn Sie nach Dateinamen oder Dateinamenmustern suchen, ist die Suche viel schneller, jedoch nicht für frisch generierte Dateien geeignet, da der verwendete Index normalerweise nur einmal pro Tag aktualisiert wird. Aber wenn Sie es verwenden können, ist es super schnell.
Mit find können Sie jedoch nach Dateigröße, Alter und anderen Dingen suchen, die nach locate nicht durchsuchbar sind.
Wenn Sie wissen, wo Sie suchen müssen, können Sie den Suchbereich über den Pfad eingrenzen:
würde nur Dateien von 2 bis 10 M, maximal 1 Jahr alt, in / some / path suchen.
Programme, die im Pfad vorhanden sind, können mit whereis nach welchen, Hilfe-, Bibliotheks- und Konfigurationsdateien durchsucht werden. Beispiele:
quelle
Verwenden
locate
Der Grund dafür ist, dass
locate
eine Datenbank aller vorhandenen Verzeichnisse und Dateien verwendet wird, die bereits so erstellt wurde, wie Sie es sich vorgestellt haben!http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm
In einem festgelegten (und änderbaren) Intervall durchsucht ein Job das Dateisystem und erstellt daraus eine Datenbank. Es ist dann diese Datenbank (locationb) mit ihren entsprechenden Indizes,
locate
gegen die der Befehl verstößt, anstatt an diesem Punkt Ihre Festplatte zu durchsuchen .Der Vorteil ist, dass es im Vergleich zu einem Festplatten-Scan sehr schnell ist. Der Nachteil ist, dass die Suchdatenbank (locationb) nicht "live" ist und daher nur für Dateien verwendet werden kann, die "ab" dem letzten Scan vorhanden waren.
Führen Sie zum Aktualisieren von "locatedb now"
updatedb
(odersudo updatedb
falls erforderlich) aus.Übrigens lief ich nur vor
sudo updatedb
Ort und es dauerte 3 1/2 Sekunden! Ich habe 31.000 Dateien.quelle
Wie bereits erwähnt, ist locate möglicherweise ein besseres Tool für einfachere Suchanfragen.
Bei komplexeren Suchvorgängen bleiben Sie jedoch wahrscheinlich beim Finden hängen.
Eine Möglichkeit, die Suche zu beschleunigen, besteht darin, das Verzeichnis einzugrenzen, in dem sich Ihre Dateien befinden, anstatt das gesamte Stammverzeichnis zu durchsuchen.
quelle
für eine einzelne Suchoperation; Ich habe keine Beschleunigung gefunden. es sei denn, Sie versuchen, die Suche mithilfe von
find
Optionen einzugrenzen.Jedoch; Wenn Sie mehrere
find
Vorgänge für dieselbe Gruppe von Dateien ausführen möchten . Ich habe eine signifikante Beschleunigung bekommen, indem ich eine temporäre Datei mit allen Dateinamen befüllt und benutzegrep
. Dabei werden natürlich keine Dateien berücksichtigt, die hinzugefügt oder gelöscht werden.quelle