Глоббинг (globbing) — это техника, используемая в командной оболочке Linux (и других UNIX-подобных системах) для поиска файлов, используя шаблоны вместо перечисления имен файлов. Паттерны глоббинга помогают выполнять операции с несколькими файлами за один раз, что делает работу удобнее и эффективнее.
Базовые паттерны глоббинга:
*
— Совпадает с любым количеством символов (включая ноль символов). Пример:file*
найдетfile1.txt
,fileA
, и любые другие файлы, начинающиеся на “file”.?
— Совпадает с одним любым символом. Пример:file?.txt
найдет файлы вродеfile1.txt
илиfileA.txt
, но неfile10.txt
.[abc]
— Совпадает с любым из символов, указанных в квадратных скобках. Пример:file[abc].txt
найдетfilea.txt
,fileb.txt
, илиfilec.txt
.[a-z]
— Совпадает с любым символом в указанном диапазоне. Пример:file[a-z].txt
найдет файлы, такие какfilea.txt
,filem.txt
и т.д.[!abc]
или[^abc]
— Совпадает с любым символом, не входящим в указанный список. Пример:file[!a].txt
найдет все файлы, кромеfilea.txt
.
Комбинированные паттерны глоббинга:
file*
— Найдет все файлы, начинающиеся с “file”.*.txt
— Найдет все файлы с расширением “.txt”.file[0-9].txt
— Найдет файлы, такие какfile1.txt
,file2.txt
, но неfileA.txt
.file{1,2,3}.txt
— Найдет файлыfile1.txt
,file2.txt
,file3.txt
.
Расширенные паттерны глоббинга:
**/*.txt
— Найдет все файлы с расширением “.txt” в текущей директории и всех ее поддиректориях.[a-z]*
— Найдет файлы, начинающиеся с любой строчной буквы.[[:digit:]]*
— Найдет файлы, начинающиеся с цифры.
Использование глоббинга в командах:
ls *.txt
— Показать все файлы с расширением.txt
в текущей директории.cp file?.txt /backup/
— Скопировать файлы, такие какfile1.txt
илиfileA.txt
в директорию/backup/
.rm file[0-9]*
— Удалить файлы, начинающиеся сfile
и за которыми следует цифра.mv data{1,2,3}.csv /data/archive/
— Переместить файлыdata1.csv
,data2.csv
,data3.csv
в/data/archive/
.tar -cvf archive.tar *.log
— Архивировать все.log
файлы вarchive.tar
.
Экранирование специальных символов
Чтобы указать оболочке, что определенные символы не должны интерпретироваться как метасимволы, их необходимо экранировать с помощью обратной косой черты (\
).
ls \*.txt
— Найдет файл с именем*.txt
.ls file\?
— Найдет файл с именемfile?
.
Мета информация
Область:: 00 Linux
Родитель::
Источник::
Создана:: 2024-11-14
Автор::