searchfs
est un outil de ligne de commande macOS permettant de rechercher rapidement par nom de fichier sur des volumes APFS et HFS+ entiers. La recherche s'effectue au niveau du pilote à l'aide du catalogue du système de fichiers. Cela signifie que l'arborescence des répertoires du volume peut être analysée beaucoup plus rapidement qu'avec une recherche récursive standard de nom de fichier à l'aide find
.
La recherche ne respecte pas la casse par défaut. Les fichiers correspondants sont imprimés sur la sortie standard dans l'ordre dans lequel ils se trouvent dans le catalogue. Consultez la page de manuel pour plus de détails.
KatSearch est une application graphique native macOS construite sur searchfs
.
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
Installe le binaire dans /usr/local/bin/
. La page de manuel va dans /usr/local/share/man/man1/
.
Selon mes benchmarks, searchfs
fonctionne environ 35 à 50 % plus rapidement que find
sur les systèmes de fichiers APFS et plusieurs fois plus rapidement sur HFS+.
Voici les résultats de référence sur un MacBook Pro Retina 2012 équipé d'un SSD de 512 Go fourni par Apple exécutant un système de fichiers APFS contenant environ 2 millions de fichiers :
$ 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
Bien que je n'ai pas encore testé cela correctement, searchfs
est probablement beaucoup plus rapide que find
sur les disques durs, qui ont des temps de recherche plus longs. Il est également très rapide sur les systèmes de fichiers comportant un petit nombre de fichiers.
Apple a ajouté la recherche de catalogue de système de fichiers à Mac OS avec l'introduction du système de fichiers hiérarchique (HFS) en 1985. HFS a remplacé l'ancienne structure de table plate dans l'ancien système de fichiers MFS par un fichier de catalogue utilisant une structure B-tree. Contrairement au système de fichiers FAT de Windows, HFS (et plus tard, HFS+) a ainsi organisé l'intégralité de l'arborescence de répertoires en un seul gros fichier sur le disque, avec des nœuds interconnectés qui ne correspondaient pas à la structure hiérarchique des dossiers. Cela signifiait que les volumes pouvaient être recherchés très rapidement, quelle que soit leur taille.
Le Mac OS classique exposait cette fonctionnalité via la fonction FSCatalogSearch(), qui parcourait efficacement les nœuds, minimisant ainsi les temps de recherche sur le disque. À l'ère pré-SSD, cela donnait au Mac un avantage significatif en termes de performances par rapport à Windows en matière de recherche sur un volume complet. Pendant longtemps, FSCatalogSearch a continué à être disponible sous Mac OS X / macOS via les API Carbon mais il est désormais obsolète et ne prend pas en charge APFS, le nouveau système de fichiers d'Apple.
Cependant, la recherche dans le catalogue pour HFS+ et APFS est disponible dans les bibliothèques système de bas niveau de Darwin via la fonction searchfs(). Le programme searchfs
utilise cette fonction.
Copyright © 2017-2020 Sveinbjorn Thordarson <[email protected]>
La redistribution et l'utilisation sous forme source et binaire, avec ou sans modification, sont autorisées à condition que les conditions suivantes soient remplies :
Les redistributions du code source doivent conserver l'avis de droit d'auteur ci-dessus, cette liste de conditions et la clause de non-responsabilité suivante.
Les redistributions sous forme binaire doivent reproduire l'avis de droit d'auteur ci-dessus, cette liste de conditions et la clause de non-responsabilité suivante dans la documentation et/ou tout autre matériel fourni avec la distribution.
Ni le nom du détenteur des droits d'auteur ni les noms de ses contributeurs ne peuvent être utilisés pour approuver ou promouvoir des produits dérivés de ce logiciel sans autorisation écrite préalable spécifique.
CE LOGICIEL EST FOURNI PAR LES TITULAIRES DES DROITS D'AUTEUR ET LES CONTRIBUTEURS « EN L'ÉTAT » ET TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS, MAIS SANS LIMITATION, LES GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D'ADAPTATION À UN USAGE PARTICULIER EST DÉCLINÉE. EN AUCUN CAS LE TITULAIRE DES DROITS D'AUTEUR OU LES CONTRIBUTEURS NE SERONT RESPONSABLES DE TOUT DOMMAGE DIRECT, INDIRECT, ACCESSOIRE, SPÉCIAL, EXEMPLAIRE OU CONSÉCUTIF (Y COMPRIS, MAIS SANS LIMITATION, L'ACHAT DE BIENS OU DE SERVICES DE SUBSTITUTION ; LA PERTE D'UTILISATION, DE DONNÉES OU DE PROFITS ; OU INTERRUPTION DES ACTIVITÉS) QUELLE QUE CE SOIT LA CAUSE ET SUR TOUTE THÉORIE DE RESPONSABILITÉ, QU'ELLE SOIT CONTRACTUELLE, STRICTE OU DÉLIT (Y COMPRIS LA NÉGLIGENCE OU AUTRE) DÉCOULANT DE QUELQUE MANIÈRE QUE CE SOIT DE L'UTILISATION DE CE LOGICIEL, MÊME SI INFORMÉ DE LA POSSIBILITÉ DE TELS DOMMAGES.