Назад | Перейти на главную страницу

Как использовать команду locate в указанном каталоге?

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

Другой подход - использовать сопоставление с образцом в locate:

locate '/some/directory/*filename*'

Сравните вывод команд ниже:

$ locate tmpfile
/usr/lib64/perl5/auto/POSIX/tmpfile.al
/usr/share/man/fr/man3/tmpfile.3.gz
/usr/share/man/ja/man3/tmpfile.3.gz
/usr/share/man/man3/tmpfile.3.gz
/usr/share/man/man3p/tmpfile.3p.gz
$
$ locate '/usr/lib64/*tmpfile*'
/usr/lib64/perl5/auto/POSIX/tmpfile.al
$ 

locate /usr/lib*tmpfile* дает тот же результат.

Создайте базу данных slocate для вашего конкретного каталога с помощью:

updatedb -U /path/to/directory

и ищите:

locate <search_string>

ОБНОВИТЬ

Это отлично работает в моей системе Gentoo, но CentOS не включает -U вариант. Итак, вы можете попробовать следующее:

Создайте базу данных с помощью:

# updatedb -U /path/to/dir -o dir_locate.db

и поиск:

# locate -d dir_locate.db <search_string>

Самый простой ответ, который я могу придумать, это

locate search_term | grep "/specified/directory"

Лучшим решением может быть использование «find» и его параметров пути ...

Самый простой способ - как в следующем примере:

updatedb -o ~/tmp.db -l0 -U $PWD
locate   -d ~/tmp.db "foo"

+ Изменить $PWD в ваш конкретный каталог.

В приведенном выше примере ваша локальная база данных будет создана только для определенного каталога.