Поиск по сайту:

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


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

Читайте также: 10 полезных практических примеров объединения операторов в Linux

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

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

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

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

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

createbackup.sh  list.sh  lspace.sh        speaker.sh
listopen.sh      lost.sh  rename-files.sh  topprocs.sh

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

ls -l l*	

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

mkdir -p users-info
ls users-0*
mv -v users-0* users-info/	# Option -v flag enables verbose output

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

ls l?st.sh	

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

ls l[abdcio]st.sh 

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

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

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

ls
ls ??st*

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

ls
ls [clst]*

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

ls
ls [clst][io]?t*

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

ls
rm *tar*
ls

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

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

ls

users-111.list  users-1AA.list  users-22A.list  users-2aB.txt   users-2ba.txt
users-111.txt   users-1AA.txt   users-22A.txt   users-2AB.txt   users-2bA.txt
users-11A.txt   users-1AB.list  users-2aA.txt   users-2ba.list
users-12A.txt   users-1AB.txt   users-2AB.list  users-2bA.list

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

ls users-[0-9][a-z0-9][0-9]*

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

ls users-[0-9][a-zA-Z0-9][0-9]*

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

ls users-[0-9][a-zA-Z0-9][a-zA-Z]*

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

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

ls users-[0-9][!0-9][a-zA-Z]*

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

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

  1. Как извлечь файлы Tar в определенный или другой каталог в Linux
  2. 3 способа удалить все файлы в каталоге, кроме одного или нескольких файлов с расширениями
  3. 10 полезных советов по написанию эффективных Bash-скриптов в Linux
  4. Как использовать Awk и регулярные выражения для фильтрации текста или строки в файлах

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