たとえば、mp3ファイルのリストを作成したいと思いますa 1.mp3|a 2.mp3
。
いくつかのバリエーションを試しましたが、うまくいきecho ${(j:|:)$(echo *.mp3)}
ません。
# too much splitting
01|The|Magic|Finger|01.mp3|02|The|Magic|Finger|02.mp3|03|The|Magic|Finger|03.mp3|04|The|Magic|Finger|04.mp3|05|The|Magic|Finger|05.mp3|06|The|Magic|Finger|06.mp3
# too much quoting
01 The Magic Finger 01.mp3 02 The Magic Finger 02.mp3 03 The Magic Finger 03.mp3 04 The Magic Finger 04.mp3 05 The Magic Finger 05.mp3 06 The Magic Finger 06.mp3
これを行うための関数や変数を作成したくありません。 (簡単にできます。)
ベストアンサー1
mp3ファイルのリストを取得し、スペースecho
で区切って印刷できるように渡し、出力をパイプして読み取り、スペース/タブ/改行/ NULに分割します|
。
次のいずれかを実行します。
printf '%s|' *.mp3
または
files=(*.mp3)
joined=${(j:|:)files}
これらのファイル名をパターンとして使用する場合は、zsh
ワイルドカード文字をエスケープする必要があります。これはb
パラメータ拡張フラグを介して行われます。
pattern="(${(j:|:)${(b@)files}})"