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:
- Как извлечь файлы Tar в определенный или другой каталог в Linux
- 3 способа удалить все файлы в каталоге, кроме одного или нескольких файлов с расширениями
- 10 полезных советов по написанию эффективных Bash-скриптов в Linux
- Как использовать Awk и регулярные выражения для фильтрации текста или строки в файлах
Если вам есть чем поделиться или задать вопросы, воспользуйтесь формой комментариев ниже.