プログラムに渡す引数のシーケンスを生成しますか?


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:forテスト/検証を使用:

$ 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}*あなたが望むものを達成します。

GNU Bashリファレンスマニュアル-Brace Expansionにあるbash拡張の詳細情報。またはから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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.