Введение
Звездочки (wildcards) в Linux — это специальные символы, которые позволяют вам одновременно искать и манипулировать несколькими файлами на основе шаблонов в их именах. Они являются мощными инструментами для эффективного управления файлами в командной строке. В этом практическом занятии (lab) вы научитесь использовать различные звездочки (wildcards) для выполнения общих операций, таких как перечисление, копирование и удаление файлов на основе соответствия шаблону.
Понимание звездочки (*) как символа подстановки (wildcard)
Звездочка * является наиболее распространенным символом-заместителем (wildcard) в Linux. Она представляет собой любое количество символов (включая ноль символов) в имени файла. Это делает ее невероятно полезной при работе с группами файлов, имеющими похожие имена.
Давайте потренируемся использовать звездочку-заместитель (wildcard):
Сначала откройте терминал и перейдите в директорию проекта:
cd ~/projectСоздайте директорию для практики в этом практическом занятии (lab) и перейдите в нее:
mkdir -p wildcard_practice cd wildcard_practiceТеперь давайте создадим несколько примеров файлов для работы:
touch file1.txt file2.txt file3.txt document1.pdf document2.pdf image.jpgИспользуйте команду
lsдля вывода списка всех файлов в директории:lsВы должны увидеть все файлы, которые вы только что создали:
document1.pdf document2.pdf file1.txt file2.txt file3.txt image.jpgТеперь давайте используем звездочку-заместитель (wildcard), чтобы вывести только текстовые файлы:
ls *.txtЭта команда должна отобразить только файлы, оканчивающиеся на
.txt:file1.txt file2.txt file3.txtВы также можете использовать звездочку-заместитель (wildcard) для поиска файлов, начинающихся с определенного шаблона. Чтобы вывести все файлы, начинающиеся с "file":
ls file*Эта команда должна показать:
file1.txt file2.txt file3.txtЧтобы вывести все PDF-документы:
ls *.pdfЭта команда должна отобразить:
document1.pdf document2.pdf
Звездочка-заместитель (wildcard) является универсальной и может использоваться в любом месте шаблона. Например, *1* соответствует любому файлу, в имени которого есть "1" в любом месте.
Использование символов подстановки с вопросительным знаком (?)
Вопросительный знак ? в качестве звездочки (wildcard) представляет ровно один символ. Он полезен, когда вы хотите найти файлы с похожими именами, но различающимися одним символом в определенной позиции.
Давайте рассмотрим, как работает вопросительный знак в качестве звездочки (wildcard):
Убедитесь, что вы все еще находитесь в директории
wildcard_practice:cd ~/project/wildcard_practiceСоздадим дополнительные файлы, чтобы лучше продемонстрировать использование вопросительного знака в качестве звездочки (wildcard):
touch file-a.txt file-b.txt file-c.txt test1.log test2.log test3.logЧтобы вывести список всех файлов "file-?.txt", где ? - это один символ:
ls file-?.txtЭта команда должна отобразить:
file-a.txt file-b.txt file-c.txtАналогично, чтобы вывести список всех файлов "test?.log":
ls test?.logВывод должен быть таким:
test1.log test2.log test3.logВы можете комбинировать несколько вопросительных знаков, чтобы найти соответствие нескольким одиночным символам. Например, чтобы найти все текстовые файлы с именами вида "file?":
ls file?.txtЭто должно показать:
file1.txt file2.txt file3.txtВопросительный знак в качестве звездочки (wildcard) особенно полезен, когда вам нужно найти соответствие определенному шаблону с вариациями в точных позициях. Например, если вы хотите найти файлы, которые заканчиваются одной цифрой, за которой следует .log:
ls test?.log
Вопросительный знак в качестве звездочки (wildcard) более конкретен, чем звездочка, так как он соответствует ровно одному символу, в то время как звездочка может соответствовать любому количеству символов.
Использование квадратных скобок [] для классов символов
Квадратные скобки [] в качестве звездочки (wildcard) позволяют указать набор или диапазон символов для сопоставления в определенной позиции в имени файла. Это обеспечивает более точный поиск, чем звездочка или вопросительный знак в качестве звездочек (wildcards).
Давайте потренируемся использовать квадратные скобки в качестве звездочки (wildcard):
Убедитесь, что вы все еще находитесь в директории
wildcard_practice:cd ~/project/wildcard_practiceСоздадим дополнительные файлы для работы:
touch data-1.csv data-2.csv data-3.csv data-a.csv data-b.csvЧтобы вывести список файлов, у которых в определенной позиции есть цифра, можно использовать квадратные скобки с диапазоном:
ls data-[1-3].csvЭто должно отобразить:
data-1.csv data-2.csv data-3.csvАналогично, чтобы вывести список файлов, у которых в этой позиции есть буква:
ls data-[a-z].csvЭто должно показать:
data-a.csv data-b.csvВы также можете указать конкретные символы внутри квадратных скобок. Например, чтобы вывести список файлов, у которых после "data-" есть либо '1', либо 'a':
ls data-[1a].csvЭто должно отобразить:
data-1.csv data-a.csvСимвол крышечка
^внутри квадратных скобок инвертирует сопоставление. Чтобы вывести все файлы "data-", кроме тех, которые заканчиваются на "1" или "2":ls data-[^12].csvЭта команда должна показать:
data-3.csv data-a.csv data-b.csv
Квадратные скобки обеспечивают точный контроль, когда вам нужно найти файлы, которые различаются по определенным символам в определенных позициях.
Практические операции с файлами с использованием символов подстановки
Теперь, когда мы понимаем различные типы звездочек (wildcards), давайте используем их для выполнения общих операций с файлами, таких как копирование, перемещение и удаление файлов.
Сначала убедитесь, что вы находитесь в директории
wildcard_practice:cd ~/project/wildcard_practiceСоздадим директорию для резервных копий файлов:
mkdir backupСкопируем все текстовые файлы в директорию для резервных копий, используя звездочку в качестве звездочки (wildcard):
cp *.txt backup/Убедимся, что файлы были скопированы правильно:
ls backup/Вы должны увидеть все текстовые файлы в директории для резервных копий:
file-a.txt file-b.txt file-c.txt file1.txt file2.txt file3.txtТеперь создадим еще одну директорию для организации различных типов файлов:
mkdir csv_files pdf_files log_filesПереместим все CSV-файлы в директорию
csv_files:mv *.csv csv_files/Переместим все PDF-файлы в директорию
pdf_files:mv *.pdf pdf_files/Переместим все логические файлы в директорию
log_files:mv *.log log_files/Убедимся, что каждая директория содержит правильные файлы:
echo "CSV Files:" ls csv_files/ echo "PDF Files:" ls pdf_files/ echo "Log Files:" ls log_files/Вывод должен показать соответствующие файлы в каждой директории.
Наконец, очистим директорию для резервных копий, удалив все текстовые файлы, имена которых содержат цифры:
rm backup/file[0-9].txtУбедимся, что в директории для резервных копий остались только текстовые файлы с именами, состоящими из букв:
ls backup/Вывод должен показать:
file-a.txt file-b.txt file-c.txt
Эти примеры демонстрируют, как звездочки (wildcards) могут значительно упростить задачи по управлению файлами, которые в противном случае потребовали бы нескольких команд или ручного управления отдельными файлами.
Резюме
В этом практическом занятии (лабораторной работе) вы узнали, как использовать звездочки (wildcards) в Linux для эффективного управления и манипулирования файлами. Основные концепции, которые были рассмотрены:
- Использование звездочки (*) в качестве звездочки (wildcard) для сопоставления любого количества символов
- Использование вопросительного знака (?) в качестве звездочки (wildcard) для сопоставления ровно одного символа
- Использование квадратных скобок [] для сопоставления определенных символов или диапазонов
- Применение звездочек (wildcards) к общим операциям с файлами, таким как вывод списка файлов, копирование и удаление файлов
Эти техники работы с звездочками (wildcards) являются важными инструментами для любого пользователя Linux, они экономят время и уменьшают количество ошибок при работе с множеством файлов. Они позволяют выполнять сложные операции с файлами с помощью простых и лаконичных команд, вместо того чтобы обрабатывать каждый файл отдельно.
По мере дальнейшей работы с системами Linux вы обнаружите множество возможностей для применения этих шаблонов с использованием звездочек (wildcards) для оптимизации рабочего процесса и повышения продуктивности.



