FreeBSD - locate - быстрый поиск файлов
locate - быстрый поиск файлов
Команда locate позволяет искать файлы в индексированной базе данных. Отличие от find - поиск происходит мгновенно
При первом запуске locate мы получим сообщение об ошибке:
# locate traceroute locate: database too small: /var/db/locate.database
Это значит, что БД по которой должен производиться поиск - не сформирована, либо давно не обновлялась:
# ls -l /var/db/locate.database -rw-r--r-- 1 nobody wheel 0 6 янв 2010 /var/db/locate.database
Обновление базы данных производится программой locate.updatedb - /usr/libexec/locate.updatedb. Однако запускать ее от рута - не стоит. В таком случае в БД попадёт вся информация о файловой системе. Запуск нужно производить через скрипт - /etc/periodic/weekly/310.locate, который выполняет запуск от пользователя nobody:
# /etc/periodic/weekly/310.locate
Обновление базы locate также осуществляется через демон cron и присутствует в списке задач periodic weekly(выполняется в суботу в 04:15)
# grep "periodic weekly" /etc/crontab 15 4 * * 6 root periodic weekly
Использование:
# locate crontab /etc/crontab /usr/bin/crontab /usr/obj/usr/src/usr.sbin/cron/crontab /usr/obj/usr/src/usr.sbin/cron/crontab/.depend /usr/obj/usr/src/usr.sbin/cron/crontab/crontab /usr/obj/usr/src/usr.sbin/cron/crontab/crontab.1.gz /usr/obj/usr/src/usr.sbin/cron/crontab/crontab.5.gz /usr/obj/usr/src/usr.sbin/cron/crontab/crontab.o /usr/ports/mail/courier/files/crontab.in /usr/ports/net-mgmt/ifgraph/files/crontab.in /usr/ports/net-mgmt/netdisco/files/patch-netdisco.crontab /usr/ports/sysutils/anacron/files/anacrontab.default /usr/ports/sysutils/fcron/files/fcrontab-operator /usr/ports/sysutils/fcron/files/fcrontab-root /usr/ports/www/campsite/files/crontab.in.in /usr/share/examples/etc/crontab /usr/share/man/cat1/crontab.1.gz /usr/share/man/cat5/crontab.5.gz /usr/share/man/man1/crontab.1.gz /usr/share/man/man5/crontab.5.gz /usr/src/etc/crontab /usr/src/usr.sbin/cron/crontab /usr/src/usr.sbin/cron/crontab/Makefile /usr/src/usr.sbin/cron/crontab/crontab.1 /usr/src/usr.sbin/cron/crontab/crontab.5 /usr/src/usr.sbin/cron/crontab/crontab.c
Подсчитать количество файлов в системе:
# locate / | wc -l 442394
Подсчитать количество файлов в системе c расширением .conf:
# locate "*.conf" | wc -l 774
Поиск, игнорируя регистр:
# locate -i /x11/xtrans
Особенности поиска locate:
Ищутся все файлы и каталоги в именах которых встречается подстрока заданная в качестве аргумента. Файлы выводятся включая полный путь к ним. Заданная подстрока вообще может не входить в имя самого файла, а встречаться в его пути