お使いのバージョン(cat *.mp3 > merged.mp3
)は期待どおりに機能するはずです。は*.mp3
シェルによって展開され、アルファベット順になります。
Bashリファレンスマニュアルから:
単語分割後、-fオプションが設定されていない限り、Bashは各単語をスキャンして文字'*'、'?'、および'['を探します。これらの文字のいずれかが表示された場合、その単語はパターンと見なされ、パターンに一致するファイル名のアルファベット順にソートされたリストに置き換えられます。
ただし、多くのファイル(または長いファイル名)がある場合は、「引数リストが長すぎます」というエラーによって妨げられることに注意してください。
その場合は、find
代わりに次を使用してください。
find . -name "*.mp3" -maxdepth 0 -print0 | sort -z | xargs -0 cat > merged.mp3
-print0
オプションinは、フィールドセパレータとしてヌル文字を使用し(find
MP3ファイルで一般的なように、スペースを含むファイル名を適切に処理するため)、-z
insort
および-0
inxargs
はプログラムに代替セパレータを通知します。
ボーナス機能:-maxdepth 0
サブディレクトリ内のファイルも含めるために省略します。
ただし、MP3ファイルをマージするこの方法では、ID3ヘッダーや期間情報などの情報が台無しになります。これは、iTunesなどのよりうるさいプレーヤーのプレイアビリティに影響します(多分?)。
正しく行うには、「MP3ファイルをロスレスで結合するためのより良い方法」または「mp3ファイルをマージするための最良の方法は何ですか?」を参照してください。