Используя специальные символы, можно формировать шаблоны имен файлов.
*
| соответствует любой (возможно, пустой) последовательности символов
|
?
| соответствует точно одному любому символу
|
[ ]
| используются для группирования символов в наборы. Наборы могут задаваться:
явным перечислением символов, без указания разделителей между ними, например [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:]
| Символы печати
|