команда `locate` (Linux) не показывает никаких файлов в домашнем каталоге

239
xxm

Система: Debian Sid

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

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

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

1

1 ответ на вопрос

1
harrymc

Команда 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команда будет более полезной, поскольку она сканирует реальные файлы, а не устаревшую базу данных.

Похожие вопросы