เมื่อดูที่ Dolphin with Baloo โดยเฉพาะดูเหมือนว่าจะค้นหาข้อมูลเมตาของทุกไฟล์ในโดเมนการค้นหาแม้ว่าคุณจะทำการค้นหาชื่อไฟล์อย่างง่าย เมื่อผมติดตามfile.soกระบวนการฉันเห็นโทรไปlstat, getxattrและgetxattrอีกครั้งสำหรับทุกไฟล์, และแม้กระทั่งสำหรับ..รายการ การเรียกระบบเหล่านี้จะดึงข้อมูลเมตาเกี่ยวกับไฟล์ที่จัดเก็บในตำแหน่งอื่นจากชื่อไฟล์ (ชื่อไฟล์จะถูกเก็บไว้ในเนื้อหาไดเรกทอรี แต่ข้อมูลเมตาอยู่ในinode ) การสอบถามข้อมูลเมตาของไฟล์หลาย ๆ ครั้งมีราคาถูกเนื่องจากข้อมูลจะอยู่ในดิสก์แคช แต่อาจมีความแตกต่างอย่างมีนัยสำคัญระหว่างการสืบค้นข้อมูลเมตาและไม่ทำการสืบค้นข้อมูลเมตา
findฉลาดกว่านี้มาก พยายามหลีกเลี่ยงการเรียกระบบที่ไม่จำเป็น มันจะไม่โทรgetxattrเพราะมันไม่ได้ค้นหาตามคุณสมบัติเพิ่มเติม เมื่อสำรวจไดเรกทอรีมันอาจต้องเรียกlstatชื่อไฟล์ที่ไม่ตรงกันเนื่องจากอาจเป็นไดเรกทอรีย่อยเพื่อค้นหาแบบเรียกซ้ำ ( lstatเป็นการเรียกระบบที่ส่งคืนข้อมูลเมตาของไฟล์รวมถึงประเภทไฟล์เช่นปกติ / directory / symlink / ... ) อย่างไรก็ตามfindมีการปรับให้เหมาะสม: มันรู้จำนวนไดเรกทอรีย่อยที่ไดเรกทอรีได้จากการนับลิงก์และหยุดการเรียกlstatเมื่อรู้ว่ามันสำรวจผ่านไดเรกทอรีย่อยทั้งหมด โดยเฉพาะในไดเรกทอรีใบไม้ (ไดเรกทอรีที่ไม่มีไดเรกทอรีย่อย)findตรวจสอบชื่อเท่านั้นไม่ใช่ข้อมูลเมตา นอกจากนี้ระบบไฟล์บางระบบยังเก็บสำเนาชนิดของไฟล์ไว้ในรายการไดเรคทอรีเพื่อที่findจะไม่จำเป็นต้องโทรlstatถ้านั่นเป็นข้อมูลที่ต้องการเท่านั้น
หากคุณเรียกใช้findด้วยตัวเลือกที่ต้องตรวจสอบข้อมูลเมตามันจะทำการlstatโทรเพิ่มแต่มันจะไม่ทำการlstatเรียกไฟล์ถ้าไม่ต้องการข้อมูล (ตัวอย่างเช่นเนื่องจากไฟล์ถูกแยกโดยเงื่อนไขก่อนหน้า จับคู่กับชื่อ)
ฉันสงสัยว่าเครื่องมือค้นหา GUI อื่น ๆ ที่สร้างfindวงล้อนั้นฉลาดน้อยกว่ายูทิลิตี้บรรทัดคำสั่งซึ่งได้รับการปรับแต่งมาหลายทศวรรษ อย่างน้อยปลาโลมานั้นฉลาดพอที่จะใช้ฐานข้อมูลการค้นหาหากคุณค้นหา“ ทุกที่” (มีข้อ จำกัด ที่ไม่ชัดเจนใน UI ที่ผลลัพธ์อาจล้าสมัย)