2016-12-31 12 views
0

同じ接頭辞で開始したフォルダ内のすべての.wavファイル:マージ私はこのようになりfilelistに持って

S134_001.wav 
S134_002.wav 
S134_003.wav 
S149_001.wav 
S149_002.wav 
S149_003.wav 
S16_001.wav 
S16_002.wav 
S16_003.wav 
S16_004.wav 
S16_005.wav 
S16_006.wav 
S272_001.wav 
S272_002.wav 
S272_003.wav 
S272_004.wav 
S272_005.wav 
S272_006.wav 
S272_007.wav 
S374_001.wav 
S396_001.wav 
S92_001.wav 

をそして、私はS134にS134_001.wav、S134_002.wav、S134_003.wavをマージします.wav; S149_001.wav、S149_002.wav、S149_003.wavをS149.wavに、 (好ましくはソックスを使用して)。

元のファイルも削除します。

どのように達成できますか? Bashが推奨される解決策ですが、どのようなプログラミング言語でも可能です。ありがとう。

答えて

2

あなたはこのようなforループを使用することができます。ここでは、* _001.wavファイルを反復し、

  • がファイル
  • からプレフィックスを導出し、ファイルをCONCAT

    for f in *_001.wav 
    do 
        pre=${f%%_001.wav} 
        # use either cat or sox or whatever works: 
        #cat "${pre}_"*.wav > "${pre}.wav" 
        sox -m "${pre}_"*.wav "${pre}.wav" 
        #rm -rf "${pre}_"*.wav 
    done 
    
    • 同じ接頭辞を新しいファイルに追加します。
    • すべてが機能している場合は、rmコマンドの前にコメントを削除できます。
  • +0

    また、 '.wav'はオーディオ形式のいくつかの並べ替えで、' cat'とマージするのは実際には意味がなく、同じもののための他のツールが必要かもしれません。 – Inian

    +1

    @Inianそれは、 '* _001.wav'のセットに対してのみ' * '部分を' $ pre'に繰り返します。 '$ {pre} _ *。wav'を' $ {pre} .wav'という名前の新しいファイルに連結するので、共通の接頭辞を持つすべてのファイルは1つのループステップで処理され、共通の名前を付けた新しいファイルにマージされます接頭辞。 'cat'を使って' split'で分割されたファイルが意味をなす場合。ファイルを別の方法で扱う必要がある場合は、コマンドを微調整する必要があります。このスニペットはその微調整のテンプレートです。 –

    +0

    ああ!これは最初の部分には意味がありますが、 'cat'はここでは意味がありません。OPXの' sox'を使用して、 "好ましくはsox"というファイルを管理してください。 catを使ったデータ – Inian

    関連する問題