
- •«Операционные системы.Командный интерфейс» конспект лекций Тема 1. Введение. Содержание курса
- •Тема 2. Классификация режимов работы ос
- •Диалоговый пакетный
- •Тема 3. Виды нтерфейсов пользователя ос unix
- •Тема 4. Обобщенные принцпы построения современных ос
- •Тема 5. Состав ос unix
- •Тема 6. Среда для работы пользователя
- •Тема 7. Регистрация пользователя в системе
- •Тема 8. Группа коммуникационных команд
- •Тема 9. Группа вспомогательных команд
- •Тема 10. Перенаправление ввода-вывода
- •Файловая система unix
- •Тема 11. Файлы unix
- •Тема 12. Генерация имен файлов
- •Тема 13. Структура системы каталогов unix
- •Тема 14. Управление каталогами в unix
- •Тема 15. Команды поиска файлов в системе каталогов
- •Тема 16. Управление файлами
- •Тема 17. Управление правами доступа к файлам и каталогам
- •Здесь файл fil1.C, владельцем которого является пользова-
- •Тема 18. Конвееры и фильтры
- •Тема 19. Создание и редактирование текстовых файлов
- •Команды удаления текста
- •Введение в shell- программирование
- •Тема 20. Операторы – команды
- •В unix при написании операторов важное значение отводится
- •Тема 21. Управление локальными переменными
- •Тема 22. Подстановка значений переменных
- •Тема 23. Экспортирование локальных переменных в среду shell
- •Тема 24. Проверка условий
- •2. Сравнение числовых значений:
- •3. Сравнение строк:
- •If список_команд1
- •Тема 25. Построение циклов
- •Тема 26. Управление процессами в unix
- •Тема 27. Создание фоновых процессов
- •Тема 28. Управление приоритетами
- •Тема 29. Завершение процессов
- •Тема 30. Перехватывание сигналов
- •Тема 31. Сетевые средства unix
Тема 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
””””””””””””””””””””””””””””
$
Команда имеет много опций и богата своими возможностями для самых разных применений.Например для поиска файлов или строк файлов по различным сочетаниям ключей (опций), с использованием регулярных выражений для описания условий поиска и т.д..