Сведения о документе

Поиск

Антон Бояршинов


Поиск информации в файловой системе можно условно разделить на поиск по атрибутам файла (понимая их расширительно, то есть включая имя, путь и т. п.) и поиск по содержимому. Для этих видов поиска как правило используются программы find и grep соответственно. Благодаря удобным средствам межпроцессного взаимодействия, эти два вида поиска легко объединить, то есть искать нужную информацию только в файлах с нужными атрибутами[1].

Поиск по атрибутам

Основным средством поиcка по атрибутам файла является программа find. Обобщенный вызов find выглядит так: find путь выражение, где путь — это список каталогов, в которых надо искать, а выражение — набор выражений, описывающих критерии отбора файлов и действия, которые надо произвести над найденными файлами. По умолчанию имена найденных файлов просто выводятся на стандартный вывод, но это можно переопределить и передавать список имён найденных файлов любой команде для обработки. По умолчанию find ищет во всех подкаталогах каталогов, заданных в списке путей.

Выражения

Выражения, определяющие критерии поиска файлов, состоят из пар ключ — значение. Ниже перечислены некоторые из возможных параметров поиска:

-amin, -anewer, -atime

Время последнего доступа к файлу. Позволяет искать файлы, которые были открыты в некоторый период времени, или наоброт, файлы, к которым никто не обращался в течение некоторого периода.

-cmin, -cnewer, -ctime

Время последнего изменения статуса файла.

-fstype

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

-gid, -group

Пользователь и группа, которым принадлежит файл.

-name, -iname

Соответствие имени файла заданному шаблону.

-regex, -iregex

Соответствие имени файла регулярному выражению.

-path, -ipath

Соответствие полного имени файла (с путём) заданному шаблону.

-perm

Права доступа.

-size

Размер файла.

-type

Тип файла.

Действия

Программа find может выполнять различные действия над найденными файлами. Наиболее важные из них:

-print

Вывести имя файла на стандартный выход (действие по умолчанию);

-delete

удалить файл;

-exec

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

Об остальных можно прочитать в экранной документации по команде find, отдав команду man find.

Параметры

Параметры влияют на общее поведение find. Наиболее важные из них:

-maxdepth

максимальная глубина поиска в подкаталогах;

-mindepth

минимальная глубина поиска в подкаталогах;

-xdef

поиск только в пределах одной файловой системы.

Об остальных можно прочитать в экранной документации по команде find.

Пример 1. Перекодировка имён файлов и каталогов из koi8-r в cp1251

find ./ -print | tac | sed -e 's/"/\\"/' | while read name; do mv "$name"
 "`dirname "$name"`/`basename "$name" | iconv -f koi8-r -t cp1251`"; done



[1] Необходимость искать файлы с нужными атрибутами среди файлов с нужным содержимым возникает реже, так как поиск по атрибутам в общем случае работает намного быстрее.

Сведения о документе