searchfs
เป็นเครื่องมือบรรทัดคำสั่งของ macOS ที่ช่วยให้ค้นหาได้อย่างรวดเร็วด้วยชื่อไฟล์บนโวลุ่ม APFS และ HFS+ ทั้งหมด การค้นหาเกิดขึ้นที่ระดับไดรเวอร์โดยใช้แค็ตตาล็อกระบบไฟล์ ซึ่งหมายความว่าแผนผังไดเร็กทอรีของวอลุ่มสามารถสแกนได้เร็วกว่าการค้นหาชื่อไฟล์แบบเรียกซ้ำมาตรฐานโดยใช้ find
การค้นหาไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ตามค่าเริ่มต้น ไฟล์ที่ตรงกันจะถูกพิมพ์ไปยังเอาต์พุตมาตรฐานตามลำดับที่พบในแค็ตตาล็อก ดูหน้าคนสำหรับรายละเอียด
KatSearch เป็นแอปพลิเคชันกราฟิก macOS แบบเนทีฟที่สร้างขึ้นจาก searchfs
git clone https://github.com/sveinbjornt/searchfs.git
cd searchfs
make
make install
ติดตั้งไบนารีลงใน /usr/local/bin/
หน้า Man /usr/local/share/man/man1/
เข้าไป
จากการวัดประสิทธิภาพของฉัน searchfs
จะทำงานเร็วกว่า find
ไฟล์ APFS ประมาณ 35-50% และเร็วกว่าหลายเท่าบน HFS+
ต่อไปนี้คือผลลัพธ์การวัดประสิทธิภาพใน MacBook Pro Retina ปี 2012 ที่มี SSD ขนาด 512 GB ที่ Apple จัดหาให้ ซึ่งใช้ระบบไฟล์ APFS ที่มีไฟล์ประมาณ 2 ล้านไฟล์:
$ 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 เพิ่มการค้นหาแค็ตตาล็อกระบบไฟล์ใน Mac OS ด้วยการเปิดตัว Hiearchical File System (HFS) ย้อนกลับไปในปี 1985 HFS แทนที่โครงสร้างตารางแบนก่อนหน้านี้ในระบบไฟล์ MFS แบบเก่าด้วยไฟล์แค็ตตาล็อกโดยใช้โครงสร้าง B-tree ต่างจากระบบไฟล์ FAT ของ Windows HFS (และใหม่กว่า HFS+) จึงจัดแผนผังไดเร็กทอรีทั้งหมดเป็นไฟล์ขนาดใหญ่ไฟล์เดียวบนดิสก์ โดยมีโหนดที่เชื่อมโยงกันซึ่งไม่ตรงกับโครงสร้างโฟลเดอร์แบบลำดับชั้น ซึ่งหมายความว่าสามารถค้นหาปริมาณได้อย่างรวดเร็วโดยไม่คำนึงถึงขนาด
Classic Mac OS เปิดเผยฟังก์ชันการทำงานนี้ผ่านทางฟังก์ชัน FSCatalogSearch() ซึ่งวนซ้ำอย่างมีประสิทธิภาพบนโหนด ซึ่งช่วยลดเวลาในการค้นหาดิสก์ให้เหลือน้อยที่สุด ในยุคก่อน SSD สิ่งนี้ทำให้ Mac มีความได้เปรียบด้านประสิทธิภาพที่เหนือกว่า Windows อย่างมาก เมื่อต้องค้นหาแบบเต็มปริมาณ เป็นเวลานานแล้วที่ FSCatalogSearch ยังคงใช้งานได้ใน Mac OS X / macOS ผ่าน Carbon API แต่ตอนนี้เลิกใช้แล้วและไม่รองรับ APFS ซึ่งเป็นระบบไฟล์ใหม่ของ Apple
อย่างไรก็ตาม การค้นหาแค็ตตาล็อกสำหรับทั้ง HFS+ และ APFS มีอยู่ในไลบรารีระบบระดับต่ำของ Darwin ผ่านทางฟังก์ชัน searchfs() โปรแกรม searchfs
ใช้ฟังก์ชันนี้
ลิขสิทธิ์ © 2017-2020 Sveinbjorn Thordarson <[email protected]>
อนุญาตให้แจกจ่ายและใช้งานในรูปแบบซอร์สและไบนารี่ โดยมีหรือไม่มีการแก้ไขก็ได้ โดยมีเงื่อนไขว่าตรงตามเงื่อนไขต่อไปนี้:
การแจกจ่ายซอร์สโค้ดซ้ำต้องคงประกาศลิขสิทธิ์ข้างต้น รายการเงื่อนไขนี้ และข้อจำกัดความรับผิดชอบต่อไปนี้
การแจกจ่ายซ้ำในรูปแบบไบนารีจะต้องทำซ้ำประกาศลิขสิทธิ์ข้างต้น รายการเงื่อนไขนี้ และข้อจำกัดความรับผิดชอบต่อไปนี้ในเอกสารประกอบและ/หรือเอกสารอื่นๆ ที่ให้มาพร้อมกับการแจกจ่าย
ห้ามใช้ชื่อของผู้ถือลิขสิทธิ์หรือชื่อผู้ร่วมให้ข้อมูลเพื่อรับรองหรือส่งเสริมผลิตภัณฑ์ที่ได้จากซอฟต์แวร์นี้โดยไม่ได้รับอนุญาตเป็นลายลักษณ์อักษรล่วงหน้าเป็นการเฉพาะ
ซอฟต์แวร์นี้จัดทำโดยผู้ถือลิขสิทธิ์และผู้มีส่วนร่วม "ตามสภาพที่เป็นอยู่" และการรับประกันทั้งโดยชัดแจ้งหรือโดยนัย รวมถึงแต่ไม่จำกัดเพียง การรับประกันโดยนัยเกี่ยวกับความสามารถในเชิงพาณิชย์และความเหมาะสมสำหรับวัตถุประสงค์เฉพาะจะถูกปฏิเสธ ไม่ว่าในกรณีใด ผู้ถือลิขสิทธิ์หรือผู้ร่วมให้ข้อมูลจะต้องรับผิดต่อความเสียหายโดยตรง โดยอ้อม โดยบังเอิญ พิเศษ ที่เป็นแบบอย่าง หรือเป็นผลสืบเนื่องใด ๆ (รวมถึงแต่ไม่จำกัดเฉพาะ การจัดหาสินค้าหรือบริการทดแทน การสูญเสียการใช้งาน ข้อมูล หรือผลกำไร; หรือธุรกิจ การหยุดชะงัก) ไม่ว่าจะเกิดขึ้นและตามทฤษฎีความรับผิดใดๆ ไม่ว่าในสัญญา ความรับผิดที่เข้มงวด หรือการละเมิด (รวมถึงความประมาทเลินเล่อหรืออย่างอื่น) ที่เกิดขึ้นในลักษณะใดก็ตามจากการใช้ซอฟต์แวร์นี้ แม้ว่าจะได้รับแจ้งถึงความเป็นไปได้ของความเสียหายดังกล่าวก็ตาม