Стандартный шаблон имени файла подстановка , чтобы соответствовать цифра является [0-9]
. Это соответствует одной цифре:
cat file[0-9].txt
Чтобы выбрать только два из них:
cat file[25].txt
Для больших чисел, чем 9, будет полезно расширение фигурных скобок (но см. Примечание ниже для различия между шаблонами сглаживания и расширениями фигурных скобок):
cat file{25..60}.txt
Опять же, расширение скобок учитывает и отдельные номера:
cat file{12,45,900,xyz}.txt
(обратите внимание, что в приведенном выше примере раскрытие фигурной скобки не включает арифметический цикл, а просто генерирует имена на основе предоставленных строк).
В bash
, с extglob
включенным параметром оболочки ( shopt -s extglob
), также будет работать следующее:
cat file@(12|45|490|foo).txt
@(...)
Шаблон будет соответствовать любой один из включенных |
-delimited моделей.
Разница между шаблонами глобализации как [...]
и @(...)
и расширениями в фигурных скобках заключается в том, что в командной строке создается расширение фигурных скобок, которое может не совпадать ни с одним из существующих имен в текущем каталоге. Шаблон подстановки имени файла будет соответствовать именам, но оболочка не будет жаловаться, если не все возможные имена существуют. Если не соответствующее имя не существует, то картина будет оставаться быть нераскрытыми, если также nullglob
опция командного интерпретатора не установлена, то в этом случае шаблон будет удален.
Пример:
touch file1
ls file[0-9]
Здесь file1
будет показан только список файлов для .
С ls file{0..9}
, ls
будет жаловаться не найти file0
, и file2
т.д.
В следующем примере первая команда будет касаться только существующих имен , соответствующих заданному шаблону, а вторая строка создаст файлы, которые еще не существуют:
touch file[0-9]
touch file{0..9}
file45.txt
. Выражение в скобках[...]
работает так же, как и в регулярном выражении, но!
вместо^
слова «не в».[...]
Модель всегда будет соответствовать один символ.