8

たくさんのmp3ファイルを一緒にマージする必要があります。私はそれを単にしていることを知っています

cat file1.mp3 >> file2.mp3

正常に動作しているようです(少なくとも、私のZuneでは正しく再生されます)。

走りたい

cat *.mp3 > merged.mp3

しかし、約50の個別のmp3ファイルがあるので、間違った場所にあるファイルに途中で驚かされたくありません(これは、再リッピングしたくないオーディオブックです)。

cat manページを読みましたが、ワイルドカード演算子の順序が定義されているかどうかがわかりませんでした。

catこれでうまくいかない場合、私のためにこれを行うことができるかもしれない簡単な方法(おそらくlsとを使用するxargs)はありますか?

4

2 に答える 2

15

お使いのバージョン(cat *.mp3 > merged.mp3)は期待どおりに機能するはずです。は*.mp3シェルによって展開され、アルファベット順になります。

Bashリファレンスマニュアルから:

単語分割後、-fオプションが設定されていない限り、Bashは各単語をスキャンして文字'*'、'?'、および'['を探します。これらの文字のいずれかが表示された場合、その単語はパターンと見なされ、パターンに一致するファイル名のアルファベット順にソートされたリストに置き換えられます。

ただし、多くのファイル(または長いファイル名)がある場合は、「引数リストが長すぎます」というエラーによって妨げられることに注意してください。

その場合は、find代わりに次を使用してください。

find . -name "*.mp3" -maxdepth 0 -print0 | sort -z | xargs -0 cat > merged.mp3

-print0オプションinは、フィールドセパレータとしてヌル文字を使用し(findMP3ファイルで一般的なように、スペースを含むファイル名を適切に処理するため)、-zinsortおよび-0inxargsはプログラムに代替セパレータを通知します。

ボーナス機能:-maxdepth 0サブディレクトリ内のファイルも含めるために省略します。


ただし、MP3ファイルをマージするこの方法では、ID3ヘッダーや期間情報などの情報が台無しになります。これは、iTunesなどのよりうるさいプレーヤーのプレイアビリティに影響します(多分?)。

正しく行うには、「MP3ファイルをロスレスで結合するためのより良い方法」または「mp3ファイルをマージするための最良の方法は何ですか?」を参照してください。

于 2011-08-24T14:17:09.760 に答える
5

試す:

ls | sort | xargs cat > merged.mp3

(とにかく、mp3ファイルをそのようにマージできるかどうかはわかりません)

于 2011-08-24T13:55:49.073 に答える