Bash и другие командные оболочки Linux, а также языковые инструменты программирования предоставляют возможность поиска файлов в файловом дереве с определенными шаблонами имени файла. Именно оболочка сравнивает имя каждого файла с заданным шаблоном. Если они совпадают, файл учитывается, а если нет — пропускается. Шаблон можно уподобить коробке, которая сможет вместить не каждое содержимое из-за различий в размерах или формах.
Для чего же эти шаблоны? Они позволяют выполнять однообразные операции с несколькими файлами одновременно. Так не потребуется повторять действия для каждого из файлов в отдельности, что значительно упрощает задачу. Шаблоны помогают выделить массив файлов, чьи названия соответствуют определенным критериям.
Шаблоны также широко используются, когда нужно найти файлы в структуре каталогов.
Специальные символы помогают задавать шаблоны имен файлов и каталогов. Наиболее часто применяются два из них: * — звездочка и ? — знак вопроса.
Звездочка (*) может символизировать любую последовательность символов в имени. Длина этой последовательности значения не имеет —
она может состоять из одного, десятка символов или не содержать вовсе. Шаблон с одним лишь символом * подойдет для абсолютно
любого файла. Другие примеры: *.html
для всех html-файлов или
my*.odt
для файлов, начинающихся на "my" и оканчивающихся на ".odt". Шаблон
*2010*
выделит файлы, имена которых содержат "2010".
Знак вопроса (?) заменяет любой единичный символ. Взяв, например, шаблон otchet.???
,
можно выделить файлы с трехбуквенным расширением, которые начинаются с задаваемой части. Шаблон
descrip?ion.pdf
укажет на файлы с определенным началом и концом, но вместо знака вопроса
может быть любой символ.
Помимо звездочки и вопросительного знака, существуют также более сложные техники в записи шаблонов. Применение квадратных скобок
[ ] с вложенными значениями позволяет создавать гибкие поисковые условия. Например, для нахождения файлов с именами,
начинающимися на "m" вне зависимости от регистра, можно использовать шаблон [mM]*
.
Для поиска файлов, начальные символы имен которых следуют в последовательности алфавита, можно задать диапазон. В шаблоне
[m-pM-P]???.png
будут найдены все файлы с расширением png, имеющие четыре буквы в имени,
первая из которых — одна из "m", "n", "o" или "p", без учета регистра.
В одном шаблоне допускается использовать различную комбинацию специальных символов. Например, [aA]*.???
.
В Bash именные шаблоны применяются в командах, для которых в аргументах приходится указывать имена файлов. К примеру, команда ls обновляет список файлов в каталогах, cp служит для копирования, а find отвечает за поиск. Однако сами команды получают не шаблон, а те файлы, которые ему соответствуют. Их отбор осуществляет командная оболочка Linux, в данном случае Bash.