Ответы:
Другой подход заключается в использовании сопоставления с образцом в 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*
дает тот же результат.
$ locate '/usr/lib64/*tmpfile'
даст никаких результатов.
locate
сквозного просмотра grep
.
Создайте базу данных 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>
updatedb: can not change group of file 'db.db.kHhzFz' to 'mlocate': Operation not permitted
проверьте, как использовать команду updatedb в качестве обычного пользователя в Linux .
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