コマンド置換の結果を追加するには?

コマンド置換の結果を追加するには?

たとえば、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}})"

おすすめ記事