Подстановочные знаки Linux что это такое

Обновлено: 21.11.2024

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

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

Подстановочный знак Значение
* Соответствует любым символам
? Соответствует любому одиночному символу
[символы] Соответствует любым символам, входящим в набор characters
[!characters] Соответствует любым символам, которые не входит в набор символов
[[:class:]] Соответствует любым символам, входящим в набор указанного класса

Ниже приведены часто используемые классы символов:

Класс символов Значение
[:alnum:] Соответствует любому буквенно-цифровому символу
[:alpha:] Соответствует любому буквенному символу
[:digit:] Соответствует любой цифре
[:lower:] Соответствует любой строчной букве
[:upper:] Соответствует любой заглавной букве

Примеры

Использование подстановочных знаков позволяет создавать очень сложные критерии выбора имен файлов. Вот несколько примеров шаблонов и их соответствия:

< tr>
Шаблон Совпадения
* Все файлы
g* Любой файл, начинающийся с "g"
b*.txt Любой файл, начинающийся с "g" и заканчивающийся на ".txt"
Данные. Любой файл, начинающийся с "Данные ", за которыми следуют ровно три символа
[abc]* Все файлы, начинающиеся с "a", "b" или "c"
BACKUP.127 Любой файл, начинающийся с «BACKUP». за которым следуют ровно три цифры
[[:upper:]]* Любой файл, начинающийся с заглавной буквы
[![:digit:]]* Любой файл, не начинающийся с цифры
*[[:lower:]123 ] Любой файл, заканчивающийся строчной буквой или цифрами «1», «2» или «3»

Диапазоны символов

Если вы пришли из другой Unix-подобной среды или читали какие-то другие книги по этой теме, вы могли столкнуться с обозначениями диапазона символов [A-Z] или [a-z]. Это традиционные обозначения Unix, которые также работали в более старых версиях Linux. Они все еще могут работать, но вы должны быть очень осторожны с ними, потому что они не дадут ожидаемых результатов, если они не будут правильно настроены.

Подстановочные знаки (также называемые метасимволами) – это символы или специальные символы, представляющие другие символы. Вы можете использовать их с любой командой, такой как команда ls или команда rm, для получения списка или удаления файлов, соответствующих заданным критериям.

Эти подстановочные знаки интерпретируются оболочкой, и результаты возвращаются выполняемой вами команде. В Linux есть три основных подстановочных знака:

  • Звездочка (*) – соответствует одному или нескольким вхождениям любого символа, в том числе отсутствию символа.
  • Вопросительный знак (?) — представляет или соответствует одному вхождению любого символа.
  • Символы в квадратных скобках ([ ]) — соответствует любому вхождению символа, заключенного в квадратные скобки. Можно использовать различные типы символов (буквенно-цифровые символы): цифры, буквы, другие специальные символы и т. д.

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

Как сопоставить имена файлов с помощью подстановочных знаков в Linux

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

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

<р>2. В этом примере показано другое использование * для копирования всех имен файлов с префиксом users-0 и заканчивающихся одним или несколькими вхождениями любого символа.

<р>3.Следующая команда сопоставляет все файлы, имена которых начинаются с l, за которым следует любой символ, и заканчиваются на st.sh (суффикс).

<р>4. Приведенная ниже команда сопоставляет все файлы, имена которых начинаются с l, за которым следует любой из символов в квадратных скобках, но заканчиваются на st.sh .

Как комбинировать подстановочные знаки для соответствия именам файлов в Linux

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

<р>5. Эта команда будет сопоставлять все имена файлов с любыми двумя префиксами, за которыми следует st, но заканчивающиеся одним или несколькими вхождениями любого символа.

<р>6. В этом примере сопоставляются имена файлов, начинающиеся с любого из этих символов [clst] и заканчивающиеся одним или несколькими вхождениями любого символа.

<р>7. В этом примере будут перечислены только имена файлов, начинающиеся с любого из этих символов [clst], за которым следует один из этих [io], а затем любой отдельный символ, за которым следует t и, наконец, одно или несколько вхождений любого символа.

<р>8. Здесь будут удалены имена файлов с одним или несколькими вхождениями любого символа, за которыми следуют буквы tar и которые заканчиваются одним или несколькими вхождениями любого символа.

Как сопоставить символы, установленные в Linux

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

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

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

Данная команда будет сопоставлять все имена файлов, начинающиеся с users-i , за которыми следует число, строчная или прописная буква или цифра, затем строчная или прописная буква и заканчивается одним или несколькими вхождениями любого символа.< /p>

Как инвертировать набор символов в Linux

<р>10. Вы также можете отменить набор символов, используя ! символ. Следующая команда выводит список всех имен файлов, начинающихся с users-i , за которым следует число, любой допустимый символ имени файла, кроме числа, затем буква нижнего или верхнего регистра и заканчивается одним или несколькими вхождениями любого символа.

На этом пока все! Если вы пробовали приведенные выше примеры, теперь вы должны хорошо понимать, как работают подстановочные знаки для сопоставления имен файлов в Linux.

Вы также можете прочитать следующие статьи, в которых показаны примеры использования подстановочных знаков в Linux:

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

Если вам понравилась эта статья, подпишитесь на уведомления по электронной почте о руководствах по Linux. Если у вас есть вопросы или сомнения? обратитесь за помощью в разделе комментариев.

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

4 мысли о «10 практических примерах использования подстановочных знаков для сопоставления имен файлов в Linux»

Это дает все содержимое, как и ожидалось:

$ ls /sys/class/net

ens4 ло wlp0s26f7u2

Но этот фильтр НЕ возвращает wlp0s26f7u2, как ожидалось:

Что я делаю не так?

На самом деле, он выполнил запрос; хитрость в том, что то, что он нашел, на самом деле не было плоским файлом. На моем компьютере это на самом деле символическая ссылка на каталог. Так что на самом деле он показывает содержимое этого каталога.

Вы можете увидеть это, если начнете с этого:

Звездочка (*) – соответствует нулю или более вхождению любого символа, числа.

Здесь символ означает буквенно-цифровые символы или все допустимые символы имени файла. Он также не соответствует ни одному символу (ничего).

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

Подстановочный знак в Linux — это символ или набор символов, которые заменяют другие символы. Его можно использовать для замены любого другого символа или символов в строке. Например, вы можете использовать подстановочный знак, чтобы получить список всех файлов в каталоге, имена которых начинаются с буквы О.

В Linux распространены три типа подстановочных знаков:

    <ли>? – соответствует одному символу. Например, O??d соответствует всему, что начинается с O, заканчивается на d и имеет два символа между ними (например, Oind, Okhd, Oerd, но не Oereed, Oad, Oerererd).
  • * — соответствует любому символу или набору символов, включая отсутствие символа. Например, O*d соответствует всему, что начинается с O и заканчивается на d (например, Oind, Okhd, Oerd, Oereed, Oad, Oerererd, Od, Oarmeerrd). Количество символов между O и d не имеет значения.
  • Значения, заключенные в квадратные скобки, соответствуют символам, заключенным в квадратные скобки. Например, O[ac]d соответствует только Oad и Ocd. Вы также можете указать диапазон значений: O[a-e]d соответствует Oad, Obd, Ocd, Odd и Oed.

Давайте рассмотрим несколько примеров. Мы создали файлы, упомянутые выше:

Если мы хотим перечислить все файлы, которые начинаются с O, заканчиваются на d и имеют два символа между ними, мы можем использовать следующий синтаксис:

Чтобы перечислить все файлы, которые начинаются с O и заканчиваются на d, независимо от количества символов между ними, мы можем использовать следующий синтаксис:

Чтобы перечислить все файлы, которые начинаются с O и заканчиваются на d, а между ними есть a или c, нам нужно использовать следующий синтаксис:

В этом руководстве по Linux мы обсудим, как можно использовать подстановочные знаки в Linux, чтобы упростить рабочий процесс и повысить продуктивность. Мы также рассмотрим самые мощные и часто используемые подстановочные знаки в Linux.

Подстановочные знаки, также известные как метасимволы, являются настоящим подарком, когда дело доходит до поиска определенных имен файлов в куче файлов с похожими именами. Например, используя подстановочные знаки в Linux, вы можете использовать команду ls, команду rm или любую другую команду Linux в этом отношении для нескольких файлов, если они совпадают. определенные критерии.

В этом чтении мы обсудим, как можно использовать подстановочные знаки в Linux, чтобы упростить рабочий процесс и повысить продуктивность. Но сначала давайте кратко рассмотрим самые мощные и часто используемые подстановочные знаки в Linux:

  1. Звездочка (*): подстановочный знак (*) обозначает любое количество неизвестных символов. Это полезно при поиске документов или файлов, но с запоминанием только части их имени.
  2. Знак вопроса (?): подстановочный знак (?) обозначает только один неизвестный символ. Это полезно, когда у вас есть список файлов с похожими именами и вы не уверены в нескольких символах.
  3. Символы в квадратных скобках ([ ]): подстановочный знак ([ ]) — третья скобка, а не первая скобка — используется для сопоставления любых вхождений символов, определенных внутри скобок. Эта опция удобна при работе с файлами в верхнем и нижнем регистре, как мы увидим позже.

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

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

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

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

Обратите внимание, что он соответствует только файлам, начинающимся с прописной буквы «М», а не строчной буквы «м».

<р>2. Эта команда скопирует все имена файлов, начиная с My-Data и заканчивая одним или несколькими вхождениями любого символа.

<р>3. Эта команда будет сопоставлять все файлы, начинающиеся с буквы M , заканчивающиеся буквой N и содержащие любой 1 символ между ними.

<р>4. Эта команда будет сопоставлять все файлы, начинающиеся с буквы M и заканчивающиеся на букву N, но имеющие только 1 промежуточный символ принадлежит к списку символов, определенных в квадратных скобках [AEIOU] .

4 примера сочетания разных подстановочных знаков для соответствия именам файлов

Теперь, чтобы повысить свою эффективность, вы можете смешивать и сочетать эти подстановочные знаки, чтобы работать вместе и более эффективно сопоставлять имена файлов.

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

<р>2. Вот команда, которая будет сопоставлять все имена файлов, которые начинаются с любого из этих символов в квадратных скобках [MNLOP] и заканчиваются одним или несколькими вхождениями любого символа.

Давайте также посмотрим, что произойдет, если мы заменим [MNLOP] на [mnlop].

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

<р>3. Вот команда, которая будет сопоставлять все имена файлов с любым из этих символов [MNLOP] в качестве первого, любым из этих символов [AEIOU] в качестве второго, за которым следует N и, наконец, заканчивается одним или несколькими вхождениями любого символа.

Обратите внимание, что подстановочный знак (*) помогает найти только все расширения имен файлов.4.

Вот команда, которая будет сопоставлять все имена файлов, которые начинаются с одного или нескольких вхождений любого символа, ведущего к M , за которым следует любой 1 символ, затем следует N и затем заканчивается одним или несколькими вхождениями любого символа.< /p>

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

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

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

Для этого мы будем использовать следующий набор файлов, как показано на рисунке:

Как видите, созданное нами изображение представляет собой список файлов, содержащих разные данные о покемонах.

Теперь, чтобы найти все имена файлов, которые начинаются с покемонов, за которыми следует число, затем любой буквенно-цифровой символ, снова за которым следует число, а затем заканчиваются одним или несколькими вхождениями любого символа, мы можем использовать следующую команду:< /p>

Часть 6 представляет любые числовые символы от 0 до 9 .

Следующая часть [0-9a-zA-Z] представляет собой любое количество символов от 0 до 9, любую строчную букву от a до z или прописную букву от A до Z.

Таким образом, если мы заменим [0-9a-zA-Z] на [0-9a-z] , вы увидите, что результат не включает ни одного имени файла с заглавными буквами в указанной позиции.< /p>

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

Подобно тому, как вы можете указать набор символов, вы также можете отменить набор символов при сопоставлении имен файлов. Вот пример того, как это делается:

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

Используя [!a-z], мы отрицаем набор всех строчных букв. Теперь имена файлов сопоставляются для любого символа, кроме строчной буквы.

Подведение итогов

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

В разделе, посвященном работе с файлами, мы узнали о нескольких командах, позволяющих делать интересные вещи. Проблема заключалась в том, что все они одновременно работали с одним файлом, что не очень эффективно. Теперь я собираюсь представить средство для одновременной игры с набором файлов.

Так какие же они?

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

Вот основной набор подстановочных знаков:

  • * – представляет ноль или более символов.
  • <ли>? - представляет один символ
  • [] – представляет собой диапазон символов.

В качестве основного первого примера мы представим файл *. В приведенном ниже примере мы перечислим все записи, начинающиеся с буквы b.

  1. пароль
  2. /home/ryan/linuxtutorialwork
  3. л
  4. barry.txt blah.txt bob example.jpg firstfile foo1 foo2
  5. foo3 frog.jpg второй файл третий файл video.mpeg
  6. Лс Б*
  7. barry.txt blah.txt боб

Под капотом

Механизм здесь довольно интересный.На первый взгляд вы можете предположить, что приведенная выше команда ( ls ) получает аргумент b*, а затем переходит к его преобразованию в требуемые совпадения. На самом деле это bash (программа, предоставляющая интерфейс командной строки), которая выполняет перевод за нас. Когда мы предлагаем ему эту команду, он видит, что мы использовали подстановочные знаки, и поэтому перед запуском команды (в данном случае ls ) он заменяет шаблон каждым файлом или каталогом (то есть путем), который соответствует этому шаблону. Выдаем команду:

Затем система преобразует это в:

а затем выполняет программу. Программа никогда не видит подстановочные знаки и не знает, что мы их использовали. Это весело, поскольку это означает, что мы можем использовать их в командной строке, когда захотим. Мы не ограничены только определенными программами или ситуациями.

Еще несколько примеров

Еще несколько примеров, иллюстрирующих их поведение. Для всех приведенных ниже примеров предположим, что мы находимся в каталоге linuxtutorialwork и что он содержит файлы, перечисленные выше. Также обратите внимание, что я использую ls в этих примерах просто потому, что это удобный способ проиллюстрировать их использование. Подстановочные знаки можно использовать с любой командой.

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

  1. ls /home/ryan/linuxtutorialwork/*.txt
  2. /home/ryan/linuxtutorialwork/barry.txt /home/ryan/linuxtutorialwork/blah.txt

Теперь давайте представим ? оператор. В этом примере мы ищем каждый файл, вторая буква которого — i. Как видите, шаблон можно построить с помощью нескольких подстановочных знаков.

Или как насчет каждого файла с трехбуквенным расширением. Обратите внимание, что video.mpeg не соответствует, поскольку имя пути должно точно соответствовать заданному шаблону.

  1. ls *.
  2. barry.txt blah.txt example.jpg frog.jpg

И, наконец, оператор диапазона ( [ ] ). В отличие от двух предыдущих подстановочных знаков, которые задавали любой символ, оператор диапазона позволяет вам ограничиться подмножеством символов. В этом примере мы ищем каждый файл, имя которого начинается с буквы s или v.

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

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

  1. ls [^a-k]*
  2. второй файл, третий файл, видео.mpeg

Некоторые примеры из реальной жизни

В приведенных выше примерах показано, как работают подстановочные знаки, но вам может быть интересно, для чего они на самом деле. Люди используют их везде, и по мере вашего продвижения, я уверен, вы найдете много способов, которыми вы можете использовать их, чтобы сделать свою жизнь проще. Вот несколько примеров, чтобы дать вам представление о том, что возможно. Помните, что это всего лишь небольшой пример того, что возможно, и их можно использовать всякий раз, когда вы указываете путь в командной строке. Приложив немного творческого подхода, вы обнаружите, что их можно использовать в любых ситуациях.

Найти тип файла для каждого файла в каталоге.

  1. файл /home/ryan/*
  2. bin: каталог
  3. Документы: каталог
  4. frog.jpg: данные изображения в формате PNG.
  5. public_html: каталог

Переместите все файлы типа jpg или png (файлы изображений) в другой каталог.

Узнайте размер и время модификации файла .bash_history в домашнем каталоге каждого пользователя. (.bash_history — это файл в обычном домашнем каталоге пользователя, в котором хранится история команд, введенных пользователем в командной строке. Помните, что . означает, что это скрытый файл?) Как вы можете видеть в этом примере, мы можем использовать подстановочные знаки в любой точке пути.

  1. ls -lh /home/*/.bash_history
  2. -rw------- 1 harry users 2,7K 4 янв 07:32 /home/harry/.bash_history
  3. -rw------- 1 ryan users 3,1K 12 июн 21:16 /home/ryan/.bash_history

Обзор

Новые команды в этом разделе не представлены.

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

Читайте также: