ค้นหาและอัพเดต b - ไม่พบไฟล์


8

ฉันวิ่ง

sudo /usr/libexec/locate.updatedb

แล้วก็

locate Radium3

แต่มันกลับไม่มีอะไร!

แต่

$ ls ~/Library/Containers/com.catpigstudios.Radium3/
Container.plist Data

เหตุใดจึงไม่locateเห็นไฟล์ทั้งหมด

ฉันใช้คำสั่งนี้อย่างถูกต้องใน OS X หรือไม่

คำตอบ:


5

ลอง:

sudo /usr/libexec/locate.updatedb

และดูการกำหนดค่า:

/etc/locate.rc ไฟล์กำหนดค่า

แก้ไข:

โพสต์เอาท์พุทที่นี่:

echo $LOCATE_CONFIG

และ:

cat /etc/locate.rc

และ:

echo $0

ปรับปรุง:

https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man1/locate.1.html#//apple_ref/doc/man/1/locate

โปรแกรมค้นหาจะค้นหาฐานข้อมูลสำหรับชื่อพา ธ ทั้งหมดที่ตรงกับรูปแบบที่ระบุ ฐานฐานข้อมูลฐานข้อมูลถูกคำนวณใหม่เป็นระยะ ๆ (โดยปกติสัปดาห์หรือรายวัน) และมี pathnames ของไฟล์ทั้งหมดที่สามารถเข้าถึงได้ทั่วไป

ลองmdfindแทนค้นหา

Updated2:

mdfind - ชื่อข้อความที่แม่นยำยิ่งขึ้น เพียงแค่ข้อความ mdfind ให้ไฟล์ที่มีข้อความเช่นกัน - David Krmpotic

mdfind -name text

ฉันไม่ใส่เครื่องหมายข้อคิดเห็น#SEARCHPATHS="/"ในการตั้งค่ามันไม่ได้ช่วย -vตัวเลือกดูเหมือนจะไม่สร้างผลลัพธ์เพิ่มเติมใด ๆ : /
davidhq

ให้ข้อมูลเพิ่มเติมสำหรับฉันนะ ในส่วนคำตอบ "แก้ไข"
user3439968


1
$ ls -la /var/db/locate.database -r - r - r-- 1 ล้อที่ไม่มีใครใช้ 19463861 6 เม.ย. 20:08 /var/db/locate.database $ locate david.jpg / Users / david / temp /david.jpg
davidhq

1
คุณควรปรับปรุงคำตอบของคุณให้mdfind -name textถูกต้องมากขึ้น เพียงแค่mdfind textให้ไฟล์ที่มีข้อความเช่นกัน
davidhq

3

สิทธิ์อาจเป็นผู้ร้ายเนื่องจากการค้นหาไม่สามารถอ่านไฟล์ที่ไม่สามารถอ่านได้ทั่วโลก ดูคำตอบโดยPlundraสำหรับคำอธิบายเพิ่มเติม

findutilsแพคเกจจากhomebrewไม่เปิดใช้งานgupdatedbและglocateคำสั่งที่ดูเหมือนจะเอาชนะบางส่วนของข้อ จำกัด ของระบบสาธารณูปโภคในตัวที่


ขอบคุณ! แต่ตอนนี้ฉันรู้mdutilแล้วมันสมเหตุสมผลแล้วหรือที่จะตรวจสอบสิ่งนี้ กรณีการใช้งานอย่างหนึ่งที่ฉันคิดได้ก็คือฉันสามารถเรียกใช้การสแกนซ้ำอีกครั้งด้วยตนเองด้วยgupdatedb- ด้วย Spotlight ไม่ใช่เรื่องง่ายหรือต้องใช้เวลานานกว่า มีข้อดีอื่น ๆ อีกไหม?
davidhq

1
การทำดัชนีใหม่ด้วย mdutil / spotlight อาจใช้เวลาสักครู่ updatedbเร็วกว่านั้น glocateดูเหมือนว่าจะไม่มีปัญหาในการทำดัชนีไฟล์ระบบในขณะที่ฉันพบว่าmdfindไม่สนใจ ~ / Library และไฟล์ระบบอื่น ๆ แน่นอนฉันคิดว่าฉันได้รับความนิยมมากขึ้นด้วยglocateมากกว่าmdfindในกรณีส่วนใหญ่ YMMV
VogonPoetLaureate

ตกลงฉันกำลังทดสอบสิ่งนี้อยู่ ฉันคิดว่าฉันพบปัญหาบางอย่าง ... กำปั้นฉันวิ่งsudo gupdatedbแล้วบันทึกglocate Radiumผลลัพธ์ จากนั้นฉันก็วิ่งgupdatedbแล้วก็พูดว่า: /.Trashes: Permission deniedเหมือนกันกับโฟลเดอร์อื่น ๆ ฉันเปรียบเทียบผลลัพธ์สำหรับทั้งสองและมันก็เหมือนกัน! แปลก ...
davidhq

จากสิ่งที่คุณกำลังพูดคุณsudo gupdatedbเรียกใช้ครั้งแรก(เรียกใช้ในฐานะรูท) จากนั้นคุณติดตามในภายหลังโดยใช้gupdatedbเป็นผู้ใช้ปกติซึ่งจะไม่สามารถเข้าถึงไฟล์ที่ผู้ใช้รูทจะเข้าถึงได้ซึ่งหมายความว่าคุณจะได้รับ การอนุญาตถูกปฏิเสธข้อผิดพลาด หากคุณต้องการฐานข้อมูลชื่อไฟล์ที่สมบูรณ์สำหรับระบบทั้งหมดของคุณให้รันเป็น root นี่เป็นการเปิดเผยไฟล์ของคุณแก่ผู้ใช้รายอื่นบนระบบที่อาจใช้glocateคำสั่ง แต่ถ้าคุณเป็นผู้ใช้คนเดียวนั่นควรจะใช้ได้
VogonPoetLaureate

2

หากคุณต้องการค้นหาฐานข้อมูลเดียวกับที่ Spotlight ใช้คุณสามารถใช้mdfindคำสั่งเป็นทางเลือก (แม้ว่าจะไม่ใช่การแทนที่ที่แน่นอน) สำหรับlocate:

mdfind Radius3
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.