Создать последовательность аргументов для передачи в программу?

8

В настоящее время я использую комбинацию фигурных скобок и перетаскивания для одновременного воспроизведения нескольких файлов в vlc:

vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}*

Но числа всегда в полной последовательности, есть ли способ как-то указать это немного проще, может быть, что-то вроде

vlc K20-{06-17}*

? Может использовать seqкак нибудь?

я могу использовать

   $ echo K20-{$(seq -s, -f "%02.0f" 06 17)}*
K20-{06,07,08,09,10,11,12,13,14,15,16,17}*

но это не похоже на расширение *. Любой способ обойти это?

серый волк
источник
7
Синтаксис для диапазона расширения фигурной скобки {m..n}- это такK20-{06..17}*
SteelDriver

Ответы:

13

Как отмечает @steeldriver, K20-{06..17}*охватывает это.

Пример использования echoдля проверки / проверки:

$ echo vlc K20-{06,07,08,09,10,11,12,13,14,15,16,17}*
vlc K20-06* K20-07* K20-08* K20-09* K20-10* K20-11* K20-12* K20-13* K20-14* K20-15* K20-16* K20-17*
$ echo vlc K20-{06..17}*
vlc K20-06* K20-07* K20-08* K20-09* K20-10* K20-11* K20-12* K20-13* K20-14* K20-15* K20-16* K20-17*

*Будет расширяться, а если есть файлы , которые соответствуют имени в рабочем каталоге.

Так vlc K20-{06..17}*что добьетесь того, чего хотите.

Более подробную информацию о расширении bash можно найти в Справочном руководстве GNU Bash - Brace Expansion . Или man bash, прочитайте:

Выражение последовательности принимает вид {x..y [.. incr]}, где x и y являются целыми числами или одиночными символами, а incr, необязательное приращение, является целым числом.

Так:

$ echo K20-{06..10}
K20-06 K20-07 K20-08 K20-09 K20-10

$ echo K20-{06..10..2}
K20-06 K20-08 K20-10
Стив
источник