Метасимвол? осуществляет поиск любого одного символа в имени файла за исключением лидирующей точки. Предположим, вы имеете книгу, в которой 12 глав и хотите получить список глав до 9-ой главы. Если ваш справочник содержит следующие файлы:
Chapter1
Chapter2
Chapter5
Chapter9
Chapter11
то используйте шаблон с метасимволом? для получения всех глав, которые начинаются со строки "Chapter" и заканчиваются одним символом:
Chapter1
Chapter2
Chapter5
Chapter9
Хотя метасимвол осуществляет поиск одного символа, вы можете использовать его для поиска более одного символа в имени файла. Например, вы получите перечень всех остальных глав в текущем справочнике, если используете следующий шаблон:
Chapter??
И, конечно, чтобы получить список всех глав в текущем справочнике, используйте метасимвол *:
Chapter*
Поиск одного набора (метасимвол [])
Если вы хотите, чтобы shell нашел любой символ из перечисленных вами символов, то заключите эти символы в квадратные скобки. Предположим, ваш справочник содержит следующие файлы: cat, fat, mat, rat. Если вы воспользуетесь в качестве части имени файла шаблоном [crf], то shell будет искать имена файлов, в которые входят либо буква "c", либо буква "r", либо буква "f" в указанной позиции. Поис по шаблону [crf]at даст следующий результат:
cat
fat
rat
Символы, которые могут быть сгруппированы в скобки, называются классом символов.
Скобки могут также использоваться для обозначения диапазона символов, цифр или букв. Предположим в вашем справочнике содержатся следующие файлы: chapter1, chapter2, chapter3, chapter4, chapter5, chapter6. Если вы укажете:
chapter[1-5]
то shell найдет файлы c chapter1 по chapter5.
Класс символов можно также указать с помощью диапазона букв. Если вы укажете [A-Z], то shell будет искать только большие буквы, если [a-z] - то малые буквы.
Используется ли в Shell символ отрицания, как в NDOS – не знаю, не пробовал, а в документации не вижу. Приду на работу, попробую (если не забуду). Напишу, что получится.