searchfs
ist ein macOS-Befehlszeilentool zur schnellen Suche nach Dateinamen auf gesamten APFS- und HFS+-Volumes. Die Suche erfolgt auf Treiberebene mithilfe des Dateisystemkatalogs. Dies bedeutet, dass der Verzeichnisbaum des Volumes viel schneller durchsucht werden kann als mit einer standardmäßigen rekursiven Dateinamensuche mit find
.
Bei der Suche wird standardmäßig die Groß-/Kleinschreibung nicht beachtet. Passende Dateien werden in der Reihenfolge, in der sie im Katalog gefunden werden, auf der Standardausgabe gedruckt. Weitere Informationen finden Sie auf der Manpage.
KatSearch ist eine native grafische macOS-Anwendung, die auf searchfs
aufbaut.
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
Installiert die Binärdatei in /usr/local/bin/
. Die Manpage geht in /usr/local/share/man/man1/
.
Laut meinen Benchmarks läuft searchfs
etwa 35–50 % schneller als find
auf APFS-Dateisystemen und um ein Vielfaches schneller auf HFS+.
Im Folgenden finden Sie Benchmark-Ergebnisse auf einem 2012 Retina MacBook Pro mit einer von Apple gelieferten 512-GB-SSD, auf der ein APFS-Dateisystem mit etwa 2 Millionen Dateien ausgeführt wird:
$ time searchfs " something "
0,01s user 33,15s system 32% cpu 1:23,59 total
$ time find / -name " *something* "
9,53s user 67,64s system 49% cpu 2:37,39 total
Obwohl ich dies noch nicht richtig getestet habe, ist searchfs
wahrscheinlich viel schneller als find
auf Festplattenlaufwerken, die längere Suchzeiten haben. Es ist auch sehr schnell auf Dateisystemen mit einer kleinen Anzahl von Dateien.
Mit der Einführung des Hiearchical File System (HFS) im Jahr 1985 fügte Apple die Suche nach Dateisystemkatalogen zu Mac OS hinzu. HFS ersetzte die bisherige flache Tabellenstruktur im alten MFS-Dateisystem durch eine Katalogdatei mit B-Tree-Struktur. Im Gegensatz zum FAT-Dateisystem von Windows ordnete HFS (und später HFS+) daher den gesamten Verzeichnisbaum in einer großen Datei auf der Festplatte an, mit miteinander verbundenen Knoten, die nicht der hierarchischen Ordnerstruktur entsprachen. Dadurch konnten Bände unabhängig von ihrer Größe sehr schnell durchsucht werden.
Das klassische Mac OS stellte diese Funktionalität über die Funktion FSCatalogSearch() zur Verfügung, die effizient über die Knoten iterierte und so die Suchzeiten auf der Festplatte minimierte. In der Vor-SSD-Ära verschaffte dies dem Mac einen erheblichen Leistungsvorteil gegenüber Windows, wenn es um die Suche im gesamten Volume ging. FSCatalogSearch war lange Zeit weiterhin über die Carbon-APIs in Mac OS
Die Katalogsuche für HFS+ und APFS ist jedoch in den Low-Level-Systembibliotheken von Darwin über die Funktion searchfs() verfügbar. Das Programm searchfs
nutzt diese Funktion.
Copyright © 2017-2020 Sveinbjorn Thordarson <[email protected]>
Die Weiterverbreitung und Nutzung in Quell- und Binärform, mit oder ohne Änderung, ist zulässig, sofern die folgenden Bedingungen erfüllt sind:
Bei der Weiterverbreitung des Quellcodes müssen der obige Urheberrechtshinweis, diese Liste der Bedingungen und der folgende Haftungsausschluss enthalten sein.
Bei Weitergaben in binärer Form müssen der obige Urheberrechtshinweis, diese Liste der Bedingungen und der folgende Haftungsausschluss in der Dokumentation und/oder anderen mit der Weitergabe bereitgestellten Materialien wiedergegeben werden.
Weder der Name des Urheberrechtsinhabers noch die Namen seiner Mitwirkenden dürfen ohne vorherige ausdrückliche schriftliche Genehmigung zur Unterstützung oder Werbung für von dieser Software abgeleitete Produkte verwendet werden.
DIESE SOFTWARE WIRD VON DEN COPYRIGHT-INHABERN UND MITARBEITERN „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT. JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNGEN, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF, STILLSCHWEIGENDE GEWÄHRLEISTUNGEN DER MARKTGÄNGIGKEIT UND EIGNUNG FÜR EINEN BESTIMMTEN ZWECK, WERDEN AUSGESCHLOSSEN. IN KEINEM FALL SIND DER COPYRIGHT-INHABER ODER MITARBEITER HAFTBAR FÜR DIREKTE, INDIREKTE, ZUFÄLLIGE, BESONDERE, BEISPIELHAFTE ODER FOLGESCHÄDEN (EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE BESCHAFFUNG VON ERSATZGÜTERN ODER -DIENSTLEISTUNGEN; VERLUSTE VON NUTZUNG, DATEN ODER GEWINNEN); ODER GESCHÄFTSUNTERBRECHUNG), JEDOCH URSACHE UND ÜBER JEGLICHE HAFTUNGSTHEORIE, SEI ES AUS VERTRAG, VERLETZLICHER HAFTUNG ODER AUS unerlaubter Handlung (EINSCHLIESSLICH FAHRLÄSSIGKEIT ODER ANDERWEITIG), DIE SICH IN IRGENDEINER WEISE AUS DER VERWENDUNG DIESER SOFTWARE ERGEBEN, SELBST WENN AUF DIE MÖGLICHKEIT SOLCHER SCHÄDEN HINGEWIESEN WURDE.