|
Поиск файлов.
Аннотация:
Эта статья дает
представление о способах
поиска файлов по имени и
содержанию. Поиск файлов по имениВероятно, Вам знакома такая проблема: Есть файл, и Вы не помните, куда его положили. В этом случае удобна команда 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 Удачи, счастливого поиска. Перевод на русский: Алексей Цыбань © Guido Socher 1998 |
||||||||||||||||||||||||||||||||||||||
With any suggestions or questions please feel free to contact us |