searchfs
是一個 macOS 命令列工具,可在整個 APFS 和 HFS+ 磁碟區上按檔案名稱快速搜尋。使用檔案系統目錄在驅動程式層級進行搜尋。這意味著磁碟區的目錄樹的掃描速度比使用find
進行標準遞歸檔案名稱搜尋要快得多。
預設情況下,搜尋不區分大小寫。匹配文件按照在目錄中找到的順序列印到標準輸出。有關詳細信息,請參閱手冊頁。
KatSearch 是一個基於searchfs
建構的本機圖形 macOS 應用程式。
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
將二進位檔案安裝到/usr/local/bin/
中。手冊頁進入/usr/local/share/man/man1/
。
根據我的基準測試, searchfs
運行速度比 APFS 檔案系統上的find
快 35-50%,在 HFS+ 上快很多倍。
以下是 2012 年 Retina MacBook Pro 的基準測試結果,配備 Apple 提供的 512 GB SSD,運行包含約 200 萬個檔案的 APFS 檔案系統:
$ 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 中新增了檔案系統目錄搜尋。與 Windows 的 FAT 檔案系統不同,HFS(以及後來的 HFS+)將整個目錄樹排列成磁碟上的一個大文件,其相互連結的節點與分層資料夾結構不符。這意味著無論大小如何,都可以非常快速地搜尋磁碟區。
經典 Mac OS 透過 FSCatalogSearch() 函數公開此功能,該函數在節點上高效迭代,從而最大限度地減少磁碟尋道時間。在 SSD 時代之前,這使得 Mac 在全卷搜尋方面比 Windows 具有顯著的效能優勢。很長一段時間以來,FSCatalogSearch 一直透過 Carbon API 在 Mac OS X / macOS 中提供,但現在已被棄用,並且不支援 Apple 的新檔案系統 APFS。
然而,HFS+ 和 APFS 的目錄搜尋可透過 searchfs() 函數在 Darwin 的低階系統庫中使用。 searchfs
程式利用了這個函數。
版權所有 © 2017-2020 Sveinbjorn Thordarson <[email protected]>
如果滿足以下條件,則允許以原始程式碼和二進位形式重新分發和使用,無論是否經過修改:
原始碼的重新散佈必須保留上述版權聲明、此條件清單和以下免責聲明。
以二進位形式重新散佈必須在隨散佈提供的文件和/或其他資料中複製上述版權聲明、此條件清單以及以下免責聲明。
未經事先書面許可,版權所有者的姓名及其貢獻者的姓名均不得用於認可或推廣源自本軟體的產品。
本軟體由版權所有者和貢獻者「按原樣」提供,不承擔任何明示或默示的保證,包括但不限於適銷性和特定用途適用性的默示保證。在任何情況下,版權持有者或貢獻者均不對任何直接、間接、附帶、特殊、懲戒性或後果性損害(包括但不限於採購替代商品或服務;使用、數據或利潤損失;或其他損失)承擔責任。被告知可能發生此類損害。