![[Top Bar]](../../common/images/Topbar-ru.gif) 
 
![[Bottom Bar]](../../common/images/Bottombar-ru.gif)
| ![[Photo of the Author]](../../common/images/Guido-S.gif)  Guido Socher Об авторе:Увлекается linux, так как это - бесплатная система, получает удовольствие от общения с Линуксоидами всего мира. Свободное время посвящает подруге, прогулкам на велосипеде загородом, Linuxу, слушает радио BBC World Service. Содержание:  
 | Поиск файлов.![[Illustration]](../../common/images/illustration3.gif)  Аннотация: Эта 
статья дает представление о способах поиска файлов по имени и содержанию. 
 Поиск файлов по имениВероятно, Вам знакома такая проблема: Есть файл, и Вы не помните, куда его положили.В этом случае удобна команда find. Как ее использовать? Конечно, 
к этой утилите поставляется большая man-страница, но мы рассмотрим некоторые 
типичные случаи. Просмотреть  дерево каталогов, начиная с текущего, 
и найти файл  lostfile.txt: 
 
 find понимает служебные символы. Не забудьте заключить строку, 
содержащую их, в кавычки, иначе shell будет пытаться транслировать их прежде, 
чем они будут переданы программе find. Например: 
 
 Если Вы ищете в большом дереве каталогов, команда find может 
работать довольно медленно. Иногда удобнее использовать команду locate. 
Она не ищет файл непосредственно в файловой системе, а просматривает свою 
базу данных. Такой метод намного быстрее, но база данных может устареть. 
В некоторых дистрибутивах эта база модифицируется каждую ночь. Вы можете 
время от времени вручную выполнять команду updatedb, чтобы ее 
модифицировать. locate ищет подстроки: 
 
 Эта команда будет искать файлы lostfile.txt или mylostfile.txt и т.д ... До сих пор мы искали файлы, точно зная имя файла. Имя файла может быть 
не lostfile.txt, а lastfile.txt или leastfile.txt или lostfiles.txt или 
Lotsfile.txt или lostfile.text, и Вы не помните имя точно. Как теперь найти 
файл? В такой ситуации очень полезна "fault tolerant file find utility" 
(толерантная к ошибкам утилита поиска файлов), ftff. ftff 
разрешает сделать несколько "орфографических ошибок" в имени файла при 
поиске. Эта команда нашла бы все вышеперечисленные файлы:  
 
 Допустимое количество орфографических ошибок зависит от длины имени 
файла, но может быть установлено с помощью  опции -t. Чтобы разрешить 
максимум 2 ошибки и использовать служебный символ просто наберите: 
 
 Утилиту ftff  написал я, она входит в пакет whichman-1.4. 
Его можно найти по адресу 
 Иногда необходимо найти все файлы в дереве, имя которых не содержит 
некоторую строку. Например, все файлы за исключением .o и .c. Имеется несколько 
возможностей сделать это: 
 
 Обзор дерева каталоговИногда необходимо получить обзор дерева каталогов. Например, Вы получили новый CD-ROM и хотели бы узнать, что на нем есть. Вы можете просто использовать ls -R. Лично я для удобочитаемости предпочитаю один из следующих способов. Tree ( sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz ) отображает дерево каталогов в виде диаграммы.
 Или используйте добрый старый find. В Gnu версии find, 
которая обычно поставляется с Linux, имеется возможность изменить формат 
вывода, чтобы отображать, например, имя файла и его размер:  
 
 Можно воспользоваться небольшой  perl процедурой, работающей с 
командой ls, которая делает подобные вещи. Ее можно загрузить 
отсюда:  lsperl.gz. 
Существует много других утилит просмотра дерева каталогов, но для большинства 
случаев этих вполне достаточно. 
 Поиск файлов по содержанию (поиск текстовых строк в файлах).Стандартные утилиты для поиска текстовых строк в файлах - grep/egrep для обычных поисков выражения и fgrep для поиска литеральных строк. Чтобы искать выражение во всех файлах в текущем каталоге, просто наберите:
 Чтобы искать строки во всех файлах дерева каталогов, объедините find 
или другие команды поиска имени файла с egrep. Это можно сделать 
несколькими способами:  
 
 Если Вам трудно запомнить эти длинные команды, используйте маленький скрипт, который можно загрузить отсюда: grepfind.gz. Скрипт еще и удаляет не-печатаемые символы из строки поиска, чтобы Вы случайно не получили в результате поиска egrep-ом двоичный файл. Очень интересная программа поиска - agrep. Agrep работает в 
основном подобно egrep, но позволяет искать с учетом орфографических 
ошибок. Чтобы искать выражение и разрешить максимум 2 орфографические ошибки, 
наберите:  
 
 Программа agrep может быть загружена с sunsite sunsite.unc.edu/pub/Linux/utils/text/agrep-2.04.tar.Z или c оригинального сайта ftp://ftp.cs.arizona.edu/agrep/ Еще одна программа для поиска файлов glimpse - очень мощная 
утилита поиска. Она использует ту же концепцию, что и locate. 
Сначала необходимо сформировать базу данных, зато потом поиск происходит 
очень быстро. Чтобы создать поисковые индескы для содержимого всех файлов, 
начиная c текущего каталога, наберите: 
 
 После этого Вы можете искать строку во всех файлах, которые были предварительно 
индексированы 
 
 glimpse - тоже допускает орфографические ошибки (как и agrep) 
и -2 указывает, что разрешены две ошибки. glimpse доступен  
на http://glimpse.cs.arizona.edu/ 
 Есть много утилит поиска, особенно для Unix и Linux. Эта статья ни в коем случае не претендует на полноту. Если Вас интересуют другие приемы и утилиты для работы с файлами, просмотрите .lsm файлы в http://sunsite.unc.edu/pub/Linux/utils Удачи, счастливого поиска. | 
Перевод на русский: Алексей Цыбань
| This website is 
maintained by Miguel Angel Sepulveda © Guido Socher 1998 LinuxFocus 1998 |