Стандартний шаблон імені файлу підстановка , щоб відповідати цифра є [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
. Вираз дужки[...]
працює так само, як у звичайному вираженні, але використовує!
замість того,^
щоб сказати "не в".[...]
Модель завжди буде відповідати один символ.