Bagaimana cara mendapatkan mlocate hanya untuk mengindeks direktori tertentu?

23

Saya ingin menggunakan mlocate di server Ubuntu saya, tetapi hanya untuk mengindeks direktori tertentu (misalnya /homedan /data, tetapi tidak semuanya di bawah /). Namun, konfigurasi standar mlocate bekerja sebaliknya; Anda menentukan jalur yang ingin Anda hapus (dengan PRUNE_PATHS).

Apakah ada cara mudah untuk mencapai ini, atau utilitas serupa yang akan melakukan apa yang saya inginkan? (catatan: itu harus mempertahankan indeks seperti mlocate, jadi findtidak dapat diterima, misalnya) Terima kasih.

Andrew Ferrier
sumber

Jawaban:

16

Anda dapat menggunakan opsi -U (--database-root PATH)

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

-o menulis ke file output

-l 0 membuat Anda dapat membacanya, jika tidak hanya dapat diakses untuk mencari

Kemudian Anda dapat menggunakannya seperti:

locate -d /home/user/databasefile Dylan

-d mengatur databasepath

Untuk menggunakan mlocate dengan lebih dari satu direktori root, cukup buat dua databasefile, dan gunakan cari dengan dua opsi databasepath seperti ini:

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

Untuk meringkasnya dan menjawab pertanyaan yang lebih spesifik:

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
Janghou
sumber
Upvoting, karena ini adalah jawaban parsial. Namun, ini hanya memungkinkan untuk memasukkan satu jalur ke daftar putih. Pertanyaan saya secara khusus tentang bagaimana membuat daftar putih lebih dari satu jalur.
Andrew Ferrier
1
Memperbaiki jawaban dan untuk penanganan yang lebih mudah saya sarankan buat alias
Janghou
jawaban yang bagus! Saya tidak menyadari Anda dapat mencari di dua database secara paralel, terima kasih atas klarifikasi. Saya akan menandai ini diterima kecuali jawaban yang lebih baik tiba!
Andrew Ferrier
Apakah updatedb -l 0 -U /home/user/musicrekursif? Sepertinya tidak dalam kasus saya
Gaia
22

Edit file /etc/updatedb.conf

Atur PRUNEPATHSdengan direktori yang Anda TIDAK ingin mencari

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

PRUNEPATHS: Daftar nama path direktori direktori yang dipisahkan oleh spasi yang tidak boleh dipindai oleh updatedb. Setiap nama jalur harus persis dalam bentuk di mana direktori akan dilaporkan oleh loc. Secara default, tidak ada jalur yang dilewati.

Perhatikan bahwa semua informasi konfigurasi di atas juga dapat diubah atau diperbarui melalui opsi baris perintah ke utilitas updatedb.

LnxSlck
sumber
Tidak, itu kebalikan dari yang saya inginkan. Ini akan mengindeks semuanya kecuali direktori tersebut.
Andrew Ferrier
Anda dapat mengatur PRUNEPATHS dengan segalanya kecuali direktori Anda. Dengan cara ini, itu hanya akan memindai direktori Anda.
LnxSlck
OK, terima kasih untuk suntingan klarifikasi. Itu agak tidak praktis, karena ketika saya menambahkan subdirektori di samping direktori yang ingin saya indeks, saya harus ingat untuk menambahkannya ke PRUNEPATHS. Namun, itu akan berhasil. Terima kasih untuk sarannya.
Andrew Ferrier
Ya saya tahu, tetapi saya tidak dapat menemukan banyak info tentang mlocate untuk melakukan itu. Tidak bisakah kamu menggunakan sesuatu seperti find?
LnxSlck
Tidak, saya punya banyak data, jadi penting untuk diindeks. Telah diklarifikasi dalam pertanyaan.
Andrew Ferrier
1

Saya menemukan sesuatu yang dapat Anda coba:

  1. QuickSearch - "Jadi SearchTool saya menggunakan cara yang berbeda: ia menggunakan perintah 'ls' untuk membuat daftar isi dari folder yang dicari, kemudian melakukan pencarian pada output itu. Kecepatan pencarian dengan cara ini sangat cepat (kecuali untuk pertama kali harus membuat Output 'ls'). "

Tidak begitu yakin tentang pengindeksan.

  1. Gunakan alat pelacak-gui
  2. Cukup solusi lumpuh untuk menemukan "letakkan direktori pencarian Anda di sini"> files.list grep 'filename' files.list
LnxSlck
sumber
Cobalah untuk tidak menambahkan banyak jawaban. Jika perlu, edit jawaban yang ada dan sertakan lebih banyak informasi. Terima kasih.
jokerdino
Ya, saya akan melakukannya
LnxSlck