Используя специальные символы, можно формировать шаблоны имен файлов.
| *
| соответствует любой (возможно, пустой) последовательности символов
|
| ?
| соответствует точно одному любому символу
|
| [ ]
| используются для группирования символов в наборы. Наборы могут задаваться:
явным перечислением символов, без указания разделителей между ними, например [atz56,=] – символ соответствует либо одной из трех букв a, t и z, либо одной из цифр 5 и 6, либо одному из спецсимволов запятая и знак равенства
путем указания диапазона, например [a-z] – символ соответствует строчной букве от а до z
комбинацией этих способов, например [0-9ij] – символ соответствует либо цифре, либо одной из букв i или j
|
| !
| используется для отрицания набора символов, то есть имя файла не должно содержать указанных символов
|
Примеры:
| f*
| соответствует файлам с именами, начинающимися с буквы f
|
| *f*
| соответствует файлам с именами, содержащими букву f
|
| program.?
| соответствует файлам с именами program, имеющими однобуквенные расширения
|
| ??[a-d]*
| соответствует файлам с именами, в которых третьей буквой является a, b, c или d
|
| [!A-Z]*[2468]
| соответствует файлам с именами, не начинающимися с большой буквы и заканчивающимися на цифру 2, 4, 6 или 8
|
Если в имя файла должен входить какой-либо спецсимвол, то при указании шаблона этот спецсимвол необходимо предварять с помощью обратного слэша («\»), или экранировать, например:
| [AEIOUYaeiouy]\*???
| соответствует файлам с именами, начинающимися с гласной буквы, за которой следует символ *, а за ней – три произвольных символа
|
При использовании диапазонов символов следует учитывать, что они могут зависеть от выбранных настроек локализации. Например, диапазон [b-e] означает символы от b до е включительно. В английском языке, где сортировка букв идет по порядку (ABC…XYZabc…xyz), указанному набору соответствует набор символов b, c, d, e. Согласно правилам русского языка, сортировка тех же символов идет в другом порядке (аАбБвВ…эЭюЮяЯaAbBcC…xXyYzZ) и тому же диапазону соответствуют символы b, B, c, C, d, D, е. Для решения таких проблем имеются объявления некоторых классов и категорий символов:
| [:upper:]
| Латинские буквы верхнего регистра
|
| [:lower:]
| Латинские буквы нижнего регистра
|
| [:alpha:]
| Латинские буквы верхнего и нижнего регистров
|
| [:alnum:]
| Латинские буквы верхнего и нижнего регистров, цифры
|
| [:digit:]
| Цифры
|
| [:xdigit:]
| Шестнадцатеричные цифры
|
| [:punct:]
| Знаки пунктуации
|
| [:blank:]
| Пробел и табуляция
|
| [:space:]
| Символы пропуска (пробел, табуляция, перевод каретки, перевод строки и т.п.)
|
| [:cntrl:]
| Управляющие символы (клавиша [Ctrl]+символ)
|
| [:graph:]
| Символы печати
|