Bash и другие командные оболочки Linux, а также языковые инструменты программирования предоставляют возможность поиска файлов в файловом дереве с определенными шаблонами имени файла. Именно оболочка сравнивает имя каждого файла с заданным шаблоном. Если они совпадают, файл учитывается, а если нет — пропускается. Шаблон можно уподобить коробке, которая сможет вместить не каждое содержимое из-за различий в размерах или формах.

Для чего же эти шаблоны? Они позволяют выполнять однообразные операции с несколькими файлами одновременно. Так не потребуется повторять действия для каждого из файлов в отдельности, что значительно упрощает задачу. Шаблоны помогают выделить массив файлов, чьи названия соответствуют определенным критериям.

Шаблоны также широко используются, когда нужно найти файлы в структуре каталогов.

Специальные символы помогают задавать шаблоны имен файлов и каталогов. Наиболее часто применяются два из них: * — звездочка и ? — знак вопроса.

Звездочка (*) может символизировать любую последовательность символов в имени. Длина этой последовательности значения не имеет — она может состоять из одного, десятка символов или не содержать вовсе. Шаблон с одним лишь символом * подойдет для абсолютно любого файла. Другие примеры: *.html для всех html-файлов или my*.odt для файлов, начинающихся на "my" и оканчивающихся на ".odt". Шаблон *2010* выделит файлы, имена которых содержат "2010".

Знак вопроса (?) заменяет любой единичный символ. Взяв, например, шаблон otchet.???, можно выделить файлы с трехбуквенным расширением, которые начинаются с задаваемой части. Шаблон descrip?ion.pdf укажет на файлы с определенным началом и концом, но вместо знака вопроса может быть любой символ.

Помимо звездочки и вопросительного знака, существуют также более сложные техники в записи шаблонов. Применение квадратных скобок [ ] с вложенными значениями позволяет создавать гибкие поисковые условия. Например, для нахождения файлов с именами, начинающимися на "m" вне зависимости от регистра, можно использовать шаблон [mM]*.

Для поиска файлов, начальные символы имен которых следуют в последовательности алфавита, можно задать диапазон. В шаблоне [m-pM-P]???.png будут найдены все файлы с расширением png, имеющие четыре буквы в имени, первая из которых — одна из "m", "n", "o" или "p", без учета регистра.

В одном шаблоне допускается использовать различную комбинацию специальных символов. Например, [aA]*.???.

Примеры шаблонов имен файлов

В Bash именные шаблоны применяются в командах, для которых в аргументах приходится указывать имена файлов. К примеру, команда ls обновляет список файлов в каталогах, cp служит для копирования, а find отвечает за поиск. Однако сами команды получают не шаблон, а те файлы, которые ему соответствуют. Их отбор осуществляет командная оболочка Linux, в данном случае Bash.

Вопросы для самопроверки:

  1. Какую роль выполняют шаблоны в командных оболочках Linux?
  2. Какие основные специальные символы используются для задания шаблонов имен файлов в Bash?
  3. Какие команды в Bash используют именные шаблоны?

Программа курса:

  1. Описание курса
  2. История операционной системы Linux
  3. Основы лицензии GNU GPL и её преимущества
  4. Функции и структура ядра Linux-систем
  5. Структура и каталоги файловой системы Linux
  6. Основные типы файлов в системе Linux
  7. Интерфейс командной строки в Linux
  8. Командная оболочка Bash в Linux
  9. Использование параметров команд в Bash
  10. Использование Ctrl+C, Ctrl+D и Ctrl+Z
  11. Автодополнение и история команд в Bash
  12. Перенаправление ввода и вывода в Bash
  13. Документация Linux и Man-страницы
  14. Абсолютная и относительная адресация в Linux
  15. Команда ls - как просматривать каталоги в Linux
  16. Копирование, перемещение и удаление в Linux
  17. Жесткие и символьные ссылки в Linux
  18. Создание жестких и символических ссылок в Linux
  19. Права доступа к файлам и каталогам в Linux
  20. Изменение прав доступа к файлам с помощью chmod
  21. Использование шаблонов имен файлов в Linux
  22. Поиск файлов в Linux с помощью команды find
  23. Использование команды sudo в Linux
  24. Управление пакетами с помощью APT в Linux