1

Система: Debian Sid

Проблема: команда locate возвращает только те файлы, которые существуют вне моего (пользовательского) домашнего каталога. Такое поведение является новым и, вероятно, было введено через некоторое обновление пакета.

Команда вела себя нормально и возвращала имена файлов и каталогов из любой точки системы, но теперь она как-то ограничена, как описано.

Я думаю, что это связано с базой данных и, возможно, с updatedb , но я не знаком с настройкой. Что я могу проверить и изменить, чтобы восстановить нормальное поведение locate?

1 ответ1

1

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

Если вы хотите создать базу данных только для себя, вы можете использовать:

updatedb -l 0  --output=/home/username/.mydb.db

И искать в нем, используя:

locate -d ~/.mydb.db search-pattern

Вы можете использовать псевдонимы, чтобы сделать его более удобным:

alias lupdatedb="updatedb -l 0  --output=/home/username/.mydb.db"
alias llocate="locate -d ~/.mydb.db"

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .