プログラムに渡される一連のパラメータを生成しますか?

プログラムに渡される一連のパラメータを生成しますか?

現在、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}*

しかし、拡張されそうではありません*。回避策がありますか?

ベストアンサー1

@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拡張。または、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

おすすめ記事