Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции_ОСС.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
476.16 Кб
Скачать

Тема 15. Команды поиска файлов в системе каталогов

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

find <список_каталогов>< условия_поиска> -определение полных имен файлов в поддереве каталогов, удовлетворяющих заданным условиям поиска.

В команде может быть задано до 18 условий_поиска. Необхо-

димые комбинации условий объединяются в булевское выражение с помощью элементарных логических операций ('элементарных логических функций). Таким образом формируется логическая функция, принимающая истинное значение если значения всех её составляющих истины. На экран выводятся полные маршрутные имена файлов, свойства которых обеспечивают истинность этой функции.

! <условие> отрицание условия;

<пробел> соответствует операции "И";

-o операция "ИЛИ";

\( выражение \) булевское выражение в скобках.

При описании команды используются обозначения:

n положительное десятичное число;

-n любое положительное десятичное число, строго меньшее n;

+n любое положительное десятичное число, строго большее n.

Условия задаются следующими опциями:

-name'имя_файла' истинно для файлов с указанным именем.

-perm <8-ричный_код> истинно для файлов с указанным кодом прав доступа.

-type {f|d|b|c|p} истинно для файлов указанного типа.

-links n истинно для файлов с числом ссылок n.

-user <имя_пользователя> истинно для файлов, принадлежащих данному пользователю.

-size n[c] истинно для файлов с длиной n (число блоков) или с – в символах (байтах).

-exec <команда> {} \; истинно, если команда возвращает

нулевой код завершения (true), т.е. опция выполняет <команда> для каждого найденного файла.

Все аргументы команды find разделяются пробелами.

Пример 1.

$ find lev -type f -links +1

Выводятся на экран полные маршрутные имена всех обычных файлов головного каталога и его подкаталогов, на которые имеется более одной ссылки.

Поиск в корневом каталоге и во всех нижележащих с выводом листинга атрибутов каждого из найденных файлов:

$ find * -type d -links +3 -exec ls -al {} \;

где {} – “подстановка”, т.е. команда, указанная в скобках будет выполняться для каждого найденного файла, имя которых будет подставлено вместо фигурных скобок.

Пример 2.

$ find /dev \( -type b -o -type d \)

Выводятся имена каталогов или специальных файлов устройств

блок-ориентированного типа из каталога /dev и его подкаталогов.

Пример 3. Иллюстрирует форму выходной информации.

$ find * -type d <NewLine>

где * - поиск в текущем [.]и во всех нижележащих каталогах [*].

””””””””””””

.

./ira

./petr

./lev1/lev11

””””””””””””

$

Команду можно использовать для поиска файлов по их-имени или даже по части имени. Например

$find / “(-name “fil.*” –o –user petr –exec cat {} \;)”

Команда выводит на экран список файлов, имена которых включают указанные шаблоны. Некоторые версии UNIX требут заключения в кавычки специальных символов. В данном случае – () и *.

Все рассмотренные команды этой группы имеют инвариантное

применение для файлов всех типов, независимо от их назначения и

содержания.

grep [-ключи] 'шаблон' <список_файлов> -поиск в файлах из списка_файлов строк, содержащих указанный шаблон (подстрока символов).

Ключи определяют режимы поиска и вывода:

-c выводятся имена всех просмотренных файлов и количество

найденных строк, содержащих шаблон;

-n перед каждой строкой выводится ее относительный номер в

файле и сама строка;

-i игнорируются регистры;

-l выводятся только имена файлов, содержащие найденные

строки и др..

Примеры.

$ grep -c 'aaa' *

””””””””

f.1: 10

f.2: 3

f.3: 1

””””””””

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

$ grep -l aaa *

”””

f.1

f.2

f.3

...

”””

$

В отличие от предыдущего случая, выводятся только имена

файлов, содержащих строки с шаблоном aaa.

$ grep -n bbb * <NewLine>

””””””””””””””””””””””””””””

f.1: 5: aaaaaabbbbaaacc

f.2: 2: bbbbbbbbbbbbbbbbbbbb

f.6: 1: bbb

””””””””””””””””””””””””””””

$

Команда имеет много опций и богата своими возможностями для самых разных применений.Например для поиска файлов или строк файлов по различным сочетаниям ключей (опций), с использованием регулярных выражений для описания условий поиска и т.д..