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