searchfs
APFS および HFS+ ボリューム全体でファイル名によって迅速に検索するための macOS コマンド ライン ツールです。検索は、ファイル システム カタログを使用してドライバー レベルで行われます。これは、ボリュームのディレクトリ ツリーを、 find
を使用した標準の再帰的ファイル名検索よりもはるかに高速にスキャンできることを意味します。
デフォルトでは、検索では大文字と小文字が区別されません。一致するファイルは、カタログ内で見つかった順序で標準出力に出力されます。詳細についてはマニュアルページを参照してください。
KatSearch は、 searchfs
上に構築されたネイティブ グラフィカル macOS アプリケーションです。
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
バイナリを/usr/local/bin/
にインストールします。 man ページは/usr/local/share/man/man1/
にあります。
私のベンチマークによると、 searchfs
APFS ファイルシステムでのfind
よりも約 35 ~ 50% 高速に実行され、HFS+ では何倍も高速に実行されます。
以下は、約 200 万個のファイルを含む APFS ファイル システムを実行する、Apple 提供の 512 GB SSD を搭載した 2012 Retina MacBook Pro でのベンチマーク結果です。
$ 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
まだこれを適切にテストしていませんが、 searchfs
おそらく、シーク時間が長いハードディスク ドライブでのfind
よりもはるかに高速です。また、ファイル数が少ないファイル システムでは実際に非常に高速です。
Apple は、1985 年に階層ファイル システム (HFS) を導入して、Mac OS にファイル システム カタログ検索を追加しました。HFS は、古い MFS ファイル システムのフラット テーブル構造を、B ツリー構造を使用したカタログ ファイルに置き換えました。 Windows の FAT ファイル システムとは異なり、HFS (および後の HFS+) は、ディレクトリ ツリー全体をディスク上の 1 つの大きなファイルに配置し、階層フォルダー構造と一致しない相互リンクされたノードを持ちました。これは、サイズに関係なく、ボリュームを非常に迅速に検索できることを意味します。
Classic Mac OS は、FSCatalogSearch() 関数を介してこの機能を公開し、ノード間で効率的に反復処理を行うことで、ディスクのシーク時間を最小限に抑えました。 SSD 以前の時代では、これにより、フルボリューム検索に関して Mac は Windows よりも大幅なパフォーマンス上の利点を得ることができました。長い間、FSCatalogSearch は Carbon API 経由で Mac OS X / macOS で利用可能でしたが、現在は非推奨となっており、Apple の新しいファイル システムである APFS をサポートしていません。
ただし、HFS+ と APFS の両方のカタログ検索は、searchfs() 関数を介して Darwin の低レベル システム ライブラリで利用できます。 searchfs
プログラムはこの関数を利用します。
著作権 © 2017-2020 スヴェインビョルン・ソーダーソン <[email protected]>
以下の条件が満たされる場合、修正の有無にかかわらず、ソースおよびバイナリ形式での再配布および使用が許可されます。
ソース コードを再配布する場合は、上記の著作権表示、この条件リスト、および次の免責事項を保持する必要があります。
バイナリ形式で再配布する場合は、上記の著作権表示、この条件リスト、および次の免責事項を、配布物とともに提供されるドキュメントおよび/またはその他の資料に複製する必要があります。
書面による事前の特別な許可がない限り、著作権所有者の名前もその寄稿者の名前も、このソフトウェアから派生した製品を推奨または宣伝するために使用することはできません。
このソフトウェアは著作権者および寄稿者によって「現状のまま」提供され、商品性および特定目的への適合性の暗黙の保証を含むがこれに限定されない、明示的または黙示的な保証は一切否認されます。いかなる場合においても、著作権所有者または寄稿者は、直接的、間接的、偶発的、特別、例示的、または結果的損害(代替品またはサービスの調達、使用、データ、またはデータの損失を含みますがこれらに限定されません)に対して責任を負わないものとします。たとえその可能性について知らされていたとしても、契約上、厳格責任、または不法行為(過失またはその他を含む)のいずれかに起因するものであれ、いかなる責任理論に基づくものでも、 ダメージ。