Подстановка имен файлов и подстановочные знаки
Globbing
bash может выполнять подстановку имен файлов, данный процесс называется globbing, при этом не используется стандартный набор регулярных выражений
При выполнении подстановки имен файлов, производится распознавание и интерпретация шаблонных символов
Применение шаблонных символов имеет ряд ограничений, например имена файлов которые начинаются с точки не будут соответствовать шаблону, содержащему символ *
Символ ? имеет другой смысл в подстановке файлов нежели в регулярных выражениях
#Пример_1
~/folder$ ls -l [f]*
-rw-rw-r-- 1 chich chich 0 июн 16 15:24 file1.txt
-rw-r--r-- 1 root chich 0 июн 16 15:26 file2.txt
-rw-rw-r-- 1 chich chich 0 окт 2 15:06 file3
-rw-rw-r-- 1 chich chich 0 окт 2 15:06 file4
-rw-rw-r-- 1 chich chich 0 окт 2 15:06 file5
-rw-rw-r-- 1 chich chich 0 окт 2 15:06 file6
#Пример2
~/folder$ ls file?
file3 file4 file5 file6
#Пример_3
~/folder$ ls [a-z]*
file1.txt file2.txt file3 file4 file5 file6 test.log
sub_folder:
sub_folder1:
#Пример_4
~/folder$ ls [^f]*
test.log
sub_folder:
sub_folder1:
#Пример_5 файлы которые начинаются с b или c или содержать est
ls -l {b*,c*,*est*}
#Показать файлы с любым окончанием, в том числе без префикса
ls file*
file file1 file2 file3 file4 filea fileb filec
#Показать файлы кроме 1-3
ls file[^1-3]
#В диапазоне с 1-3
ls file[1-3]
file1 file2 file3
#В диапазоне от a до b
ls file[a-b]
filea fileb
#1-2 и a-b
ls file[1-3a-b]
file1 file2 file3 filea fileb
Подстановочный знаки
В Linux в качестве подстановочных знаков можно использовать три символа: * (звездочка) который обозначает ноль, один или несколько вхождений любого символа. ? (вопросительный знак) который обозначает однократное появление любого символа. [ ] (символы в квадратных скобках) который представляет любое вхождение символа (ов), заключенного в квадратные скобки. Можно использовать символы разных типов, будь то цифры, буквы или другие специальные символы. Например, выражение [0-9] соответствует всем цифрам.
#Удалить все файлы в текущем рабочем каталоге
rm *
#Вывести список всех файлов, имена которых начинаются с l, за которым следует любой символ, и заканчиваются на st
ls l?st
#Удалите все каталоги, названия которых начинаются с буквы
rmdir [a-z]*
# будут найдены все файлы, которые заканчиваются на .png
find /home -name *.png
# список всех текстовых файлов, которые начинаются с символов lpic-, за которыми следует любое количество символов, и заканчиваются символами .txt
ls lpic-*.txt
# для копирования всего содержимого каталога используется следующая команда:
cp -r SOURCE_PATH/* DEST_PATH
#Удалить файлы, которые содержат в имени подстроку ate
rm *ate*
# только те файлы, которые начинаются с l, за которыми следует любой одиночный символ и символы st.txt
ls l?st.txt
#файлы, начинающиеся с любых двух символов, за которыми следует текст st.txt
??st.txt
#список всех файлов, начинающихся с l, за которыми следует любой из символов в наборе aef и заканчивающихся на st.txt
ls l[aef]st.txt
#все файлы, имена которых начинаются с l, за которыми следует любая строчная буква в диапазоне a–z и которые заканчиваются на st.txt
ls l[a-z]st.txt
#начинается с student-
#за которым следует число и заглавная буква
#и заканчивается на .txt
ls student-[0-9][A-Z].txt
#Комбинирование подстановочных знаков
ls [plf]?st*
#список всех файлов, которые начинаются с буквы f, за которой следует любой набор букв, хотя бы одна цифра и заканчивается .txt
ls f*[0-9].txt
Источники
Связанные темы
Использование команды tee в Linux
Использование wget и curl в Linux
Команда chattr и lsattr в Linux
Использование awk Linux Alpine
Проверка на необходимость перезапуска после обновления пакетов
Архивирование и сжатие файлов в Linux
Полезные команды и скрипты Linux
Использование регулярных выражений в Linux
Условная конструкция if в Linux
Использование оператора select в языке shell
Внутренние и внешние команды linux
Использование конструкции case в Linux
Мониторинг системы Linix с помощью getconf






