định vị & updateb - không tìm thấy tập tin


8

Tôi đã chạy

sudo /usr/libexec/locate.updatedb

sau đó

locate Radium3

nhưng nó không trả về gì cả!

nhưng

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

Vậy tại sao không locatethấy tất cả các tập tin?

Tôi có đang sử dụng lệnh này một cách chính xác trên OS X không?

Câu trả lời:


5

Thử:

sudo /usr/libexec/locate.updatedb

Và xem cấu hình:

/etc/locate.rc tệp cấu hình

Đã chỉnh sửa:

Đăng ở đây đầu ra:

echo $LOCATE_CONFIG

Và:

cat /etc/locate.rc

Và:

echo $0

Cập nhật:

https://developer.apple.com/l Library / mac / document / Darwin / Reference / Manpages / man1 / resource.1.html # //apple_Vf / doc / man / 1 /ocate

Chương trình định vị tìm kiếm cơ sở dữ liệu cho tất cả các tên đường dẫn khớp với mẫu đã chỉ định. Cơ sở dữ liệu cơ sở dữ liệu được tính toán lại định kỳ (thường là hàng tuần hoặc hàng ngày) và chứa tên đường dẫn của tất cả các tệp có thể truy cập công khai .

Hãy thử mdfind thay vì xác định vị trí

Cập nhật2:

mdfind -name văn bản chính xác hơn. Chỉ cần mdfind văn bản cung cấp cho bạn các tập tin có chứa văn bản là tốt. - David Krmpotic

mdfind -name text

Tôi không chú ý #SEARCHPATHS="/"đến cấu hình, nó không giúp được gì. -vtùy chọn dường như không tạo ra bất kỳ đầu ra bổ sung nào: /
davidhq

Cung cấp thêm thông tin cho tôi. Trong phần trả lời "Đã chỉnh sửa".
dùng3439968


1
$ ls -la /var/db/locate.database -r - r - r-- 1 không có bánh xe 19463861 Ngày 6 tháng 4 20:08 /var/db/locate.database $ xác định vị trí david.jpg / Users / david / temp /david.jpg
davidhq

1
bạn nên cập nhật câu trả lời của bạn mdfind -name textchính xác hơn. Chỉ cần mdfind textcung cấp cho bạn các tập tin có chứa văn bản là tốt.
davidhq

3

Quyền có thể là thủ phạm vì định vị rõ ràng không thể đọc các tệp không thể đọc được trên thế giới. Xem câu trả lời này của Plundra để được giải thích thêm.

Các findutils gói từ homebrew không cho phép gupdatedbglocatelệnh mà dường như khắc phục một số hạn chế của các tiện ích được xây dựng trong.


Cảm ơn bạn! Nhưng bây giờ tôi biết về mdutilnó có ý nghĩa để kiểm tra này? Một trường hợp sử dụng tôi có thể nghĩ đến là tôi có thể kích hoạt quét lại thủ công với gupdatedb- với Spotlight không quá dễ dàng hoặc sẽ mất nhiều thời gian hơn (nó cũng lập chỉ mục nội dung tệp). Có những lợi thế khác?
davidhq

1
Reindexing với mdutil / spotlight có thể mất một lúc chắc chắn. updatedblà nhanh hơn cho điều đó. glocatedường như không có vấn đề gì khi lập chỉ mục các tệp hệ thống, trong khi tôi tìm thấy mdfindbỏ qua ~ / Library và các tệp hệ thống khác. Tôi chắc chắn tìm thấy tôi nhận được nhiều lượt truy cập glocatehơn mdfindtrong hầu hết các trường hợp. YMMV.
VogonPoetLaureate

ok, tôi đang thử nghiệm điều này ngay bây giờ. Tôi nghĩ rằng tôi đã tìm thấy một số vấn đề ... nắm tay tôi đã chạy sudo gupdatedb, sau đó lưu kết glocate Radiumquả đầu ra. Sau đó tôi chạy gupdatedbvà nó nói : /.Trashes: Permission denied, tương tự cho một số thư mục khác. Tôi đã so sánh đầu ra cho cả hai và nó là như nhau! Lạ thật ...
davidhq

Từ những gì bạn đang nói, trước tiên bạn đã chạy sudo gupdatedb(chạy dưới dạng root), sau đó bạn đã theo dõi sau bằng cách chạy gupdatedbnhư một người dùng bình thường không có quyền truy cập vào các tệp mà người dùng root sẽ có quyền truy cập, nghĩa là bạn sẽ nhận được quyền bị từ chối lỗi. Nếu bạn muốn có một cơ sở dữ liệu đầy đủ về tên tệp cho toàn bộ hệ thống của mình, hãy tiếp tục chạy nó dưới dạng root. Điều này sẽ hiển thị các tệp của bạn cho người dùng khác trên hệ thống có thể sử dụng glocatelệnh. Nhưng nếu bạn là người dùng duy nhất, điều đó sẽ ổn thôi.
VogonPoetLaureate

2

Nếu bạn muốn tìm kiếm cùng một cơ sở dữ liệu mà Spotlight sử dụng, bạn có thể sử dụng mdfindlệnh thay thế (mặc dù không phải là sự thay thế chính xác) cho locate:

mdfind Radius3
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.