Команда 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 выполняет поиск в названиях и описаниях портов, а затем выводит поиск всех совпадений, где встречается заданный параметр поиска.
Пример
Поиск при помощи команды 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