FreeBSD

Поиск по файловой системе

Команда find предназначена для рекурсивного поиска в каталогах файловой системы различных файлов, отбирая их по заданным вами ключам и параметрам. Она работает медленнее других команд поиска, однако её возможности велики.

Пример

find . -найти и отобразить все файлы находящиеся в текущем каталоге и во всех подкаталогах
 find /etc -name ppp.conf -найти в каталоге /etc файл с именем ppp.conf
find /etc -name «*.conf»-найти в каталоге /etc все файлы с расширением .conf
find -type f -user www -найти все файлы (f- файл, d- каталог, l- ссылка) пользователя www
find . -mtime -5 -найти файлы, измененные пять или меньше дней назад
find . -atime +10 -найти файлы, которые не читали больше десяти дней
find . -newer httpd.conf-найти файлы, которые были изменены после изменения файла httpd.conf

Для поиска по содержимому файлов нет специальной команды, и нет специального ключа для команды find, но есть возможность применить конструкцию:

# find /var/log/ -type f -exec grep -H ‘19:26′ {} ;

Разберем эту конструкцию подробнее:

  • find /var/log/ – означает, что мы ищем в каталоге /var/log/;
  • ключ -type f – что мы ищем только файлы;
  • -exec – это ключ, который позволяет перенаправить вывод команды find другим командам, каждый файл по очереди. В качестве аргумента этого ключа указывается команда, которой нужно перенаправить вывод. У нее могут быть собственные ключи. В нашем примере это команда grep с ключом -H, а значит она выведет путь и имя файла, если в нем найдется указанная фраза (у нас это ‘19:26′)

  • {} — этими скобками мы указываем, куда подставлять имена файлов в выполняемой команде;
  • ; — Точка с запятой говорит об окончании команды, вызываемой ключем -exec.

Поиск по индексированной базе

Отличие такого поиска заключается в скорости работы, но имеет некоторые недостатки. Команда locate отвечает за поиск файлов в индексированной базе данных. Поиск в такой базе осуществляется практически мгновенно,однако база данных locate нуждается в периодическом обновлении, без которого результат работы этой команды может оказаться неактуальным. Обновление базы locate осуществляется через демон cron и присутствует в списке задач periodic weekly. Обновление базы данных производится программой /usr/libexec/locate.updatedb а файл конфигурации – /etc/locate.rc.При поиске locate ищет совпадения не только в именах файлов и каталогов, но и в их путях.

Пример

locate *.conf -найти все файлы с расширением .conf
locate -i «/x11/xtrans»-поиск, не зависимый от регистра
locate -с *.pid-отобразить количество файлов с расширением .pid

Поиск по базе приложений

Команда whatis отображает краткое описание программы, записанное в индексированной базе данных. База данных создается и обновляется при помощи команды makewhatis. Она разбита на файлы, хранящиеся там же, где и сами базы man: */man/whatis. Обновление базы whatis осуществляется через демон cron и присутствует в списке задач periodic weekly. Для получения описания программы при использовании команды whatis нужно вводить полное и правильное имя программы. У этой команды нет специальных ключей или параметров.

Команда apropos так же делает поиск по базе приложений whatis, но в отличии от whatis не требует точного совпадения названия программы с параметром поиска. Она выведет все программы, в названии которых так или иначе встречается слово, введенное в качестве параметра.

Команда whereis выполняет поиск по стандартным директориям бинарных файлов, страниц помощи man, и исходных кодов программ включая /usr/src/ и /usr/ports/, и в случае совпадения выводит имена и пути этих файлов. Позволяет задавать пути поиска для каждого из 3-х компонентов, либо выполнять поиск по одному или 2-м заданным компонентам.

Пример

whereis -m -u /usr/bin/*-отображает список приложений, для которых нет страниц помощи manwhereis -s -a bash -отображает список всех (а не только первого) файлов исходников bash

Рекомендации по поиску приложений и портов

Для поиска порта нужного приложения часто используется команда whereis. Например, Вам нужно найти программу trafshow.

# whereis trafshow
/usr/ports/net/trafshow

Для более точного поиска по портам существует отдельная команда make search name=port (make search key=port). Ее можно использовать только находясь в директории портов(/usr/ports/). Используйте ключ name, если вы точно знаете название приложения. Ключ key выполняет поиск в названиях и описаниях портов, а затем выводит поиск всех совпадений, где встречается заданный параметр поиска.

Пример

#cd /usr/ports
# make search key=pppoe
Port:   rp-pppoe-3.8
Path:   /usr/ports/net/rp-pppoe
Info:   The popular Roaring Penguin’s PPPoE software
Maint:  matthias [dot] andree [at] gmx [dot] de
B-deps:
R-deps:
WWW:    http://www.roaringpenguin.com/penguin/openSourceProducts/rpPppoe

Поиск при помощи команды make search не чувствителен к регистру.

Для поиска уже установленных приложений или собранных пакетов используется команда pkg_info. Она выводит список всех установленных приложений, и их версии и короткие описания, но при использовании ключей поможет узнать больше информации об установленных приложениях.

Пример

pkg_info -a - выводит список всех установленных приложений с детальным описанием, адресом в интернете и зависимостямиpkg_info -D webmin-1.420_2 - выводит сообщение выводимое после установки для webmin-1.420_2pkg_info -r mc-4.6.1_6 - список зависимостей Midnight Commanderpkg_info -R mc-4.6.1_6 - список приложений зависимых от Midnight Commanderpkg_info -L curl-7.18.0 - список файлов с путями, принадлежащих приложению curl

Оригинал 

Оставить комментарий