Как использовать команду locate в указанном каталоге?
16
Я использую locateкоманду в Linux. Мое текущее использование этого ищет всю файловую систему. Я только хочу, чтобы искать в определенном каталоге. Как я могу это сделать?
TLDR: Вот псевдоним терминала для locateпоиска в указанном каталоге: alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db " Как только псевдоним вступит в силу, на типе терминала, my_locate *foo*и вы готовы к гонкам. Вы можете объединить обновления базы данных и найти результаты поиска, используя символ двоеточия для объединения баз данных. rtfm: linux.die.net/man/8/updatedb
Эрик Лещинский,
Ответы:
11
Другой подход заключается в использовании сопоставления с образцом в locate:
+1 Это правильный ответ. Обратите внимание, что если вы включите подстановочный знак, границы станут фиксированными. То есть в приведенном выше примере, не $ locate '/usr/lib64/*tmpfile'даст никаких результатов.
xofer
Если вы хотите большего контроля, чем могут предложить простые подстановочные знаки, вы всегда можете передать результаты locateсквозного просмотра grep.
Ладададада
5
Создайте базу данных slocate для вашего конкретного каталога с:
updatedb -U /path/to/directory
и искать с помощью:
locate <search_string>
ОБНОВИТЬ
Это хорошо работает в моей системе Gentoo, но CentOS не включает -Uопцию. Итак, вы можете попробовать ниже:
"locate -U" выдает ошибку неверного параметра ... Догадываясь, что вы имели в виду "updatedb -U"? Также хорошо отметить, что для этого требуется перестроить mlocate.db (updatedb), если вы когда-нибудь захотите найти другой каталог.
Арфист
О, на моем Gentoo он работает нормально, но CentOS не включает эту опцию.
квантами
Голосовать вниз? Не могли бы вы оставить комментарий?
locate
поиска в указанном каталоге:alias my_locate="updatedb -U /path/to/yourdir -o /path/to/your_dir_locate.db; locate -d /path/to/dir_locate.db "
Как только псевдоним вступит в силу, на типе терминала,my_locate *foo*
и вы готовы к гонкам. Вы можете объединить обновления базы данных и найти результаты поиска, используя символ двоеточия для объединения баз данных. rtfm: linux.die.net/man/8/updatedbОтветы:
Другой подход заключается в использовании сопоставления с образцом в
locate
:Сравните вывод команд ниже:
locate /usr/lib*tmpfile*
дает тот же результат.источник
$ locate '/usr/lib64/*tmpfile'
даст никаких результатов.locate
сквозного просмотраgrep
.Создайте базу данных slocate для вашего конкретного каталога с:
и искать с помощью:
ОБНОВИТЬ
Это хорошо работает в моей системе Gentoo, но CentOS не включает
-U
опцию. Итак, вы можете попробовать ниже:Создайте базу данных с помощью:
и поиск:
источник
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted
проверьте, как использовать команду updatedb в качестве обычного пользователя в Linux .Самый простой ответ, который я могу придумать,
Лучшее решение может быть использовать "найти" и его пути пути ...
источник
Самый простой способ, как в следующем примере:
Перейдите
$PWD
в ваш конкретный каталог.Приведенный выше пример создаст вашу локальную базу данных только для определенного каталога.
источник