Поиск в FreeBSD

Версия для печатиОтправить другуPDF version

 

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

Команда 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/* -отображает список приложений, для которых нет страниц помощи man
whereis -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_2
pkg_info -r mc-4.6.1_6 - список зависимостей Midnight Commander
pkg_info -R mc-4.6.1_6 - список приложений зависимых от Midnight Commander
pkg_info -L curl-7.18.0 - список файлов с путями, принадлежащих приложению curl

 

 

Ваша оценка: Нет Средняя: 4.4 (14 голосов)

Re: Поиск в FreeBSD

Спасибо! Помогли мне разобраться!!

Re: Поиск в FreeBSD

а как просмотреть полный список вывода результата, а то не все прокручивается =( 

Re: Поиск в FreeBSD

Перенаправляйте в просмотрщик, или же в текстовый файл.

Перенаправление в просмотрщик:

# здесь_команда | less

Перенаправление в файл:

# здесь_команда > /путь_к_файлу/filename.txt

 

Вставай, Україно!

Литература