Символы подстановки в Linux

LinuxBeginner
Практиковаться сейчас

Введение

Звездочки (wildcards) в Linux — это специальные символы, которые позволяют вам одновременно искать и манипулировать несколькими файлами на основе шаблонов в их именах. Они являются мощными инструментами для эффективного управления файлами в командной строке. В этом практическом занятии (lab) вы научитесь использовать различные звездочки (wildcards) для выполнения общих операций, таких как перечисление, копирование и удаление файлов на основе соответствия шаблону.

Понимание звездочки (*) как символа подстановки (wildcard)

Звездочка * является наиболее распространенным символом-заместителем (wildcard) в Linux. Она представляет собой любое количество символов (включая ноль символов) в имени файла. Это делает ее невероятно полезной при работе с группами файлов, имеющими похожие имена.

Давайте потренируемся использовать звездочку-заместитель (wildcard):

  1. Сначала откройте терминал и перейдите в директорию проекта:

    cd ~/project
  2. Создайте директорию для практики в этом практическом занятии (lab) и перейдите в нее:

    mkdir -p wildcard_practice
    cd wildcard_practice
  3. Теперь давайте создадим несколько примеров файлов для работы:

    touch file1.txt file2.txt file3.txt document1.pdf document2.pdf image.jpg
  4. Используйте команду ls для вывода списка всех файлов в директории:

    ls

    Вы должны увидеть все файлы, которые вы только что создали:

    document1.pdf  document2.pdf  file1.txt  file2.txt  file3.txt  image.jpg
  5. Теперь давайте используем звездочку-заместитель (wildcard), чтобы вывести только текстовые файлы:

    ls *.txt

    Эта команда должна отобразить только файлы, оканчивающиеся на .txt:

    file1.txt  file2.txt  file3.txt
  6. Вы также можете использовать звездочку-заместитель (wildcard) для поиска файлов, начинающихся с определенного шаблона. Чтобы вывести все файлы, начинающиеся с "file":

    ls file*

    Эта команда должна показать:

    file1.txt  file2.txt  file3.txt
  7. Чтобы вывести все PDF-документы:

    ls *.pdf

    Эта команда должна отобразить:

    document1.pdf  document2.pdf

Звездочка-заместитель (wildcard) является универсальной и может использоваться в любом месте шаблона. Например, *1* соответствует любому файлу, в имени которого есть "1" в любом месте.

Использование символов подстановки с вопросительным знаком (?)

Вопросительный знак ? в качестве звездочки (wildcard) представляет ровно один символ. Он полезен, когда вы хотите найти файлы с похожими именами, но различающимися одним символом в определенной позиции.

Давайте рассмотрим, как работает вопросительный знак в качестве звездочки (wildcard):

  1. Убедитесь, что вы все еще находитесь в директории wildcard_practice:

    cd ~/project/wildcard_practice
  2. Создадим дополнительные файлы, чтобы лучше продемонстрировать использование вопросительного знака в качестве звездочки (wildcard):

    touch file-a.txt file-b.txt file-c.txt test1.log test2.log test3.log
  3. Чтобы вывести список всех файлов "file-?.txt", где ? - это один символ:

    ls file-?.txt

    Эта команда должна отобразить:

    file-a.txt  file-b.txt  file-c.txt
  4. Аналогично, чтобы вывести список всех файлов "test?.log":

    ls test?.log

    Вывод должен быть таким:

    test1.log  test2.log  test3.log
  5. Вы можете комбинировать несколько вопросительных знаков, чтобы найти соответствие нескольким одиночным символам. Например, чтобы найти все текстовые файлы с именами вида "file?":

    ls file?.txt

    Это должно показать:

    file1.txt  file2.txt  file3.txt
  6. Вопросительный знак в качестве звездочки (wildcard) особенно полезен, когда вам нужно найти соответствие определенному шаблону с вариациями в точных позициях. Например, если вы хотите найти файлы, которые заканчиваются одной цифрой, за которой следует .log:

    ls test?.log

Вопросительный знак в качестве звездочки (wildcard) более конкретен, чем звездочка, так как он соответствует ровно одному символу, в то время как звездочка может соответствовать любому количеству символов.

Использование квадратных скобок [] для классов символов

Квадратные скобки [] в качестве звездочки (wildcard) позволяют указать набор или диапазон символов для сопоставления в определенной позиции в имени файла. Это обеспечивает более точный поиск, чем звездочка или вопросительный знак в качестве звездочек (wildcards).

Давайте потренируемся использовать квадратные скобки в качестве звездочки (wildcard):

  1. Убедитесь, что вы все еще находитесь в директории wildcard_practice:

    cd ~/project/wildcard_practice
  2. Создадим дополнительные файлы для работы:

    touch data-1.csv data-2.csv data-3.csv data-a.csv data-b.csv
  3. Чтобы вывести список файлов, у которых в определенной позиции есть цифра, можно использовать квадратные скобки с диапазоном:

    ls data-[1-3].csv

    Это должно отобразить:

    data-1.csv  data-2.csv  data-3.csv
  4. Аналогично, чтобы вывести список файлов, у которых в этой позиции есть буква:

    ls data-[a-z].csv

    Это должно показать:

    data-a.csv  data-b.csv
  5. Вы также можете указать конкретные символы внутри квадратных скобок. Например, чтобы вывести список файлов, у которых после "data-" есть либо '1', либо 'a':

    ls data-[1a].csv

    Это должно отобразить:

    data-1.csv  data-a.csv
  6. Символ крышечка ^ внутри квадратных скобок инвертирует сопоставление. Чтобы вывести все файлы "data-", кроме тех, которые заканчиваются на "1" или "2":

    ls data-[^12].csv

    Эта команда должна показать:

    data-3.csv  data-a.csv  data-b.csv

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

Практические операции с файлами с использованием символов подстановки

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

  1. Сначала убедитесь, что вы находитесь в директории wildcard_practice:

    cd ~/project/wildcard_practice
  2. Создадим директорию для резервных копий файлов:

    mkdir backup
  3. Скопируем все текстовые файлы в директорию для резервных копий, используя звездочку в качестве звездочки (wildcard):

    cp *.txt backup/
  4. Убедимся, что файлы были скопированы правильно:

    ls backup/

    Вы должны увидеть все текстовые файлы в директории для резервных копий:

    file-a.txt  file-b.txt  file-c.txt  file1.txt  file2.txt  file3.txt
  5. Теперь создадим еще одну директорию для организации различных типов файлов:

    mkdir csv_files pdf_files log_files
  6. Переместим все CSV-файлы в директорию csv_files:

    mv *.csv csv_files/
  7. Переместим все PDF-файлы в директорию pdf_files:

    mv *.pdf pdf_files/
  8. Переместим все логические файлы в директорию log_files:

    mv *.log log_files/
  9. Убедимся, что каждая директория содержит правильные файлы:

    echo "CSV Files:"
    ls csv_files/
    echo "PDF Files:"
    ls pdf_files/
    echo "Log Files:"
    ls log_files/

    Вывод должен показать соответствующие файлы в каждой директории.

  10. Наконец, очистим директорию для резервных копий, удалив все текстовые файлы, имена которых содержат цифры:

    rm backup/file[0-9].txt
  11. Убедимся, что в директории для резервных копий остались только текстовые файлы с именами, состоящими из букв:

    ls backup/

    Вывод должен показать:

    file-a.txt  file-b.txt  file-c.txt

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

Резюме

В этом практическом занятии (лабораторной работе) вы узнали, как использовать звездочки (wildcards) в Linux для эффективного управления и манипулирования файлами. Основные концепции, которые были рассмотрены:

  1. Использование звездочки (*) в качестве звездочки (wildcard) для сопоставления любого количества символов
  2. Использование вопросительного знака (?) в качестве звездочки (wildcard) для сопоставления ровно одного символа
  3. Использование квадратных скобок [] для сопоставления определенных символов или диапазонов
  4. Применение звездочек (wildcards) к общим операциям с файлами, таким как вывод списка файлов, копирование и удаление файлов

Эти техники работы с звездочками (wildcards) являются важными инструментами для любого пользователя Linux, они экономят время и уменьшают количество ошибок при работе с множеством файлов. Они позволяют выполнять сложные операции с файлами с помощью простых и лаконичных команд, вместо того чтобы обрабатывать каждый файл отдельно.

По мере дальнейшей работы с системами Linux вы обнаружите множество возможностей для применения этих шаблонов с использованием звездочек (wildcards) для оптимизации рабочего процесса и повышения продуктивности.