Как мне получить mlocate, чтобы индексировать только определенные каталоги?

18

Я хотел бы использовать mlocate на моем сервере Ubuntu, но только для индексации определенных каталогов (например, /home и /data , но не все под / ). Однако стандартная конфигурация mlocate работает обратным образом; вы указываете пути, которые хотите удалить (с PRUNE_PATHS ).

Есть ли простой способ достичь этого или любая аналогичная утилита, которая будет делать то, что я хочу? (обратите внимание: он должен поддерживать индекс, например mlocate , поэтому find неприемлемо, например) Спасибо.

    
задан Andrew Ferrier 06.07.2012 в 15:31
источник

3 ответа

12

Вы можете использовать опцию -U (-database-root PATH)

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

-o записывает в выходной файл

-l 0 означает, что вы можете его прочитать, иначе он доступен только для поиска

Затем вы можете использовать его как:

locate -d /home/user/databasefile Dylan

-d устанавливает путь к базе данных

Чтобы использовать mlocate с более чем одним корневым каталогом, просто создайте два файла базы данных и используйте locate с двумя вариантами пути базы данных, например:

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

Подводя итог и ответим на вопрос более конкретно:

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 10.12.2013 в 13:44
источник
18

Отредактируйте файл /etc/updatedb.conf

Настройте PRUNEPATHS с каталогами, которые вы НЕ хотите искать

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

PRUNEPATHS : список имен файлов каталогов, разделенных пробелами, которые не должны проверяться обновленнымb. Каждое имя пути должно быть точно в том виде, в котором каталог будет сообщаться по месту нахождения. По умолчанию пропуски отсутствуют.

Обратите внимание, что вся указанная выше информация о конфигурации также может быть изменена или обновлена с помощью параметров командной строки для утилиты updatedb .

    
ответ дан LnxSlck 06.07.2012 в 15:38
1

Я нашел что-то еще, что вы могли попробовать:

  1. QuickSearch - «Так что мой SearchTool использует другой способ: он использует команду« ls »для отображения содержимого найденной папки, а затем поиск по это выход. Таким образом, скорость поиска очень быстрая (за исключением того, что в первый раз он должен делать вывод «ls»).

Не очень уверен в индексировании.

  1. Использовать инструмент tracker-gui
  2. Довольно хромое решение sudo find "поместите ваши поисковые каталоги здесь" > files.list grep 'filename' files.list
ответ дан LnxSlck 06.07.2012 в 16:16