Введение
Представьте, что у вас есть неубранная комната с сотнями разбросанных листов бумаги.
- Некоторые из них — домашние задания (
math_hw.txt,english_hw.txt). - Некоторые — фотографии (
pic1.png,pic2.png). - Некоторые — мусор (
temp_1,temp_2).
Если вы хотите сложить все фотографии в одну коробку, необязательно поднимать их по одной. Вы говорите: «Подними всё, что похоже на фотографию».
В Linux для этого используются подстановочные символы (их также называют шаблонами glob). Они похожи на джокеры в карточной колоде — могут заменять другие символы.
Эта возможность позволяет работать с шаблонами, а не с отдельными именами. В реальных системах могут находиться десятки, сотни или тысячи подходящих файлов. Выбор по шаблону — одна из причин, по которым работа в оболочке хорошо масштабируется.
В этой лабораторной работе вы изучите два мощных символа:
- Звёздочка (
*): обозначает любое количество символов. - Вопросительный знак (
?): обозначает ровно один символ.
Выбор нескольких файлов (*)
Звёздочка * — самый известный подстановочный символ. Она означает: «сопоставить любое количество символов, включая ноль».
Посмотрим, что находится в нашей неубранной папке:
ls
Команда выведет список файлов. Представим, что теперь нужно вывести только текстовые файлы — файлы, имена которых заканчиваются на .txt.
Вместо того чтобы вводить ls notes.txt readme.txt report.txt, достаточно ввести *.txt.
Это означает: «найти любой файл, имя которого заканчивается на .txt».
ls *.txt
Вывод:
notes.txt readme.txt report.txt
Оболочка обработала шаблон *.txt, развернула его в список всех текстовых файлов и не включила image.png и другие файлы. Так вы отфильтровали список.
В этом примере есть важная особенность: оболочка разворачивает шаблон до запуска команды ls. Иными словами, ls обычно получает уже готовый список имён файлов, а не исходный шаблон *.txt. Поэтому подстановочные символы работают со множеством разных команд.
Перемещение файлов с помощью *
Теперь выполним полезную операцию. У нас есть несколько файлов с данными: data_2025.csv, data_2024.csv, data_old.log.
Нужно навести порядок и переместить все файлы, имена которых начинаются с data_, в папку резервных копий.
Сначала создайте эту папку:
mkdir backup
Теперь используйте подстановочный символ, чтобы переместить все подходящие файлы одной командой. Шаблон data_* соответствует любому имени, начинающемуся с data_.
mv data_* backup/
Этой командой мы сказали Linux: «Если имя начинается с data_, перемести файл в папку резервных копий».
Именно здесь подстановочные символы особенно полезны. Вместо повторного выполнения команды для каждого файла вы один раз задаёте правило имени, а оболочка сама разворачивает шаблон.
Убедитесь, что файлы исчезли из текущего каталога:
ls
Затем проверьте, что они успешно перемещены:
ls backup
Готово! Одной командой вы переместили три файла.
Выбор одного символа (?)
Звёздочка * жадная — она соответствует всему. Иногда требуется более точное сопоставление.
Подстановочный символ «вопросительный знак» ? соответствует ровно одному символу.
Поэтому ? точнее, чем *. Он полезен, когда имена файлов имеют предсказуемый формат и вы хотите избежать случайного выбора более длинных имён.
У нас есть файлы с именами temp_1, temp_2 и temp_a.
temp_*будет соответствоватьtemp_1Иtemp_very_long_name.temp_?соответствует имени только в том случае, если после символа подчёркивания находится ровно один символ.
Перед удалением проверим шаблон — это всегда хорошая привычка:
ls temp_?
Совпадения: temp_1, temp_2, temp_a.
Теперь, когда мы убедились в результате, удалим эти файлы:
rm temp_?
Убедитесь, что они удалены:
ls
Такой способ очень удобен для выбора файлов с определённой структурой имени.
Не забывайте о важном правиле безопасности: перед использованием шаблона с rm или mv сначала проверьте его с помощью неразрушающей команды, например ls. Сопоставление по шаблону — мощный инструмент, поэтому перед выполнением операции полезно просмотреть выбранные файлы.
Итоги
Теперь вы умеете использовать сопоставление по шаблону.
*(звёздочка): подстановочный символ «сопоставить всё». Подходит для выбора всех файлов определённого типа (*.png) или всех файлов одной серии (day_*).?(вопросительный знак): подстановочный символ «один символ». Подходит для точного сопоставления (file_?.txt).
На этом завершается модуль 2. Теперь вы умеете:
- Перемещаться по дереву файлов (
pwd,cd,ls). - Создавать файлы и каталоги (
touch,mkdir). - Копировать и перемещать их (
cp,mv). - Удалять их (
rm,rmdir). - Выбирать их группами (
*,?).
Вы готовы к модулю 3, где мы откроем эти файлы и научимся читать и редактировать содержащийся в них текст.



