Làm thế nào để tôi có được mlocate để chỉ mục các thư mục nhất định?


23

Tôi muốn sử dụng mlocate trên máy chủ Ubuntu của mình, nhưng chỉ lập chỉ mục một số thư mục nhất định (ví dụ /home/data, nhưng không phải mọi thứ bên dưới /). Tuy nhiên, cấu hình tiêu chuẩn của mlocate hoạt động theo cách ngược lại; bạn chỉ định các đường dẫn bạn muốn xóa (với PRUNE_PATHS).

Có cách nào dễ dàng để đạt được điều này, hoặc bất kỳ tiện ích tương tự nào sẽ làm những gì tôi muốn không? (lưu ý: cần duy trì một chỉ mục như thế mlocate, vì vậy findkhông được chấp nhận, chẳng hạn) Cảm ơn.

Câu trả lời:


16

Bạn có thể sử dụng tùy chọn -U (--database-root PATH)

updatedb -l 0 -U /home/user/music -o /home/user/databasefile

-o ghi vào tập tin đầu ra

-l 0 làm cho bạn có thể đọc nó, nếu không nó chỉ có thể truy cập để xác định vị trí

Sau đó, bạn có thể sử dụng nó như sau:

locate -d /home/user/databasefile Dylan

-d thiết lập cơ sở dữ liệu

Để sử dụng mlocate với nhiều hơn một thư mục gốc, chỉ cần tạo hai databasefiles và sử dụng định vị với hai tùy chọn databasepath như thế này:

locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring

Để tổng hợp và trả lời câu hỏi cụ thể hơn:

updatedb -l 0 -U /home -o /home/user/home_dbfile
updatedb -l 0 -U /data -o /home/user/data_dbfile
locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan

Upvote, vì đây là một câu trả lời một phần. Tuy nhiên, nó chỉ cho phép đưa vào danh sách trắng một đường dẫn. Câu hỏi của tôi là cụ thể về cách lập danh sách trắng nhiều hơn một con đường.
Andrew Ferrier

1
Cải thiện câu trả lời và để xử lý dễ dàng hơn, tôi đề nghị tạo một bí danh
Janghou

câu trả lời tốt! Tôi không nhận ra rằng bạn có thể tìm kiếm song song trong hai cơ sở dữ liệu, cảm ơn vì đã làm rõ. Tôi sẽ đánh dấu điều này được chấp nhận trừ khi có câu trả lời tốt hơn!
Andrew Ferrier

updatedb -l 0 -U /home/user/musicđệ quy? Có vẻ như không phải trong trường hợp của tôi
Gaia

22

Chỉnh sửa tập tin /etc/updatedb.conf

Thiết lập PRUNEPATHSvới các thư mục bạn KHÔNG muốn tìm kiếm

PRUNEPATHS="/tmp /var/spool /media"

PRUNEPATHS: Một danh sách tên đường dẫn được phân tách bằng khoảng trắng của các thư mục không được quét bởi updateb. Mỗi tên đường dẫn phải chính xác ở dạng thư mục sẽ được báo cáo theo vị trí. Theo mặc định, không có đường dẫn được bỏ qua.

Lưu ý rằng tất cả các thông tin cấu hình ở trên cũng có thể được thay đổi hoặc cập nhật thông qua các tùy chọn dòng lệnh cho tiện ích updatedb.


Không, đó hoàn toàn trái ngược với những gì tôi muốn. Điều này sẽ lập chỉ mục mọi thứ trừ những thư mục đó.
Andrew Ferrier

Bạn có thể đặt PRUNEPATHS với mọi thứ trừ các thư mục của bạn. Bằng cách này, nó sẽ chỉ quét các thư mục của bạn.
LnxSlck

OK, cảm ơn đã chỉnh sửa. Điều đó hơi không thực tế, vì khi tôi thêm các thư mục con bên cạnh các thư mục tôi muốn lập chỉ mục, tôi phải nhớ thêm chúng vào PRUNEPATHS. Tuy nhiên, nó sẽ làm việc. Cám ơn vì sự gợi ý.
Andrew Ferrier

Vâng tôi biết, nhưng tôi không thể tìm thấy nhiều thông tin về mlocate để làm điều đó. Bạn không thể sử dụng một cái gì đó như tìm?
LnxSlck

Không, tôi có rất nhiều dữ liệu, vì vậy điều quan trọng là nó được lập chỉ mục. Đã làm rõ trong câu hỏi.
Andrew Ferrier

1

Tôi đã tìm thấy một cái gì đó khác mà bạn có thể thử:

  1. Tìm kiếm nhanh - "Vì vậy, SearchTool của tôi sử dụng một cách khác: nó sử dụng lệnh 'ls' để liệt kê nội dung của thư mục đã tìm kiếm, sau đó thực hiện tìm kiếm trên đầu ra đó. Tốc độ tìm kiếm này rất nhanh (ngoại trừ lần đầu tiên nó phải thực hiện đầu ra 'ls'). "

Không chắc chắn lắm về lập chỉ mục.

  1. Sử dụng công cụ theo dõi-gui
  2. Giải pháp khá khập khiễng tìm "đặt thư mục tìm kiếm của bạn ở đây"> files.list grep 'filename' files.list

Cố gắng không thêm nhiều câu trả lời. Nếu cần thiết, chỉnh sửa câu trả lời hiện có và bao gồm thêm thông tin. Cảm ơn.
jokerdino

Vâng, tôi sẽ làm điều đó
LnxSlck
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.