2017-11-12 3 views
0

小さなプログラムを呼び出して.tapファイル(retrogaming)を.wavオーディオファイルに変換します。プログラムは新しいファイルを出力し、.wav拡張子を追加するだけです。 例: "file.tap"は "file.tap.wav"になります。Bash:拡張子が2つのファイルの名前を変更するにはどうすればよいですか?

私は変換をバッチするための小さなスクリプトを書いています。それは動作しますが、ファイル名の ".tap"を削除するために、最後にファイルの名前を変更することはできません。 元のファイルには、小文字または大文字が含まれることがあります。

ここは私のコードです。どんな助けも歓迎です。 私の考えは、最終ファイル名の ".tap"または ".TAP"を '消去'することでした。 nb:命令のような$ file.wavを使用する必要があります。それ以外の場合は動作しません。 は

#!/bin/bash 

for file in `ls`; 
do 
    ./tape_converter -11 -a $file $file.wav ; 
    mv $file ${file/\.tap\.wav/\.wav/}; 

done 

答えて

0

あなたは直接、同じベース名と拡張子「.WAV」で出力ファイルに名前を付けます

for f in *.tap; do 
    <your command> "$f" "${f%.*}.wav" 
done 

このような何かにあなたのスクリプトを変更することができます。

+0

(拡張子として.TAP持っている)元のファイルから削除します溶液。最後にそれは動作します。それは重要なポイントです。 – froggy

0

ちょうどその.wavを追加し、.tapを削除するあなたの助けをありがとうございました。交換をしようとする必要はありません。

for f in *; do 
    ./tape_converter -11 -a "$f" "$f.wav" 
    mv -- "$f" "${f%.tap}.wav" 
done 
+0

これは、最終的なファイルに「.TAP」を削除しません – froggy

+0

これを.TAP削除されませんが、それは確かにの一部である – froggy

0

ここに私の最終的なコードです。 thanispに感謝します。それはうまく動作します。ハッピー。

for i in *; 
    do mv "$i" "$(echo $i|tr A-Z a-z)"; 
done 

mkdir output 

for f in *.tap; 
do 
     ./tape_converter -11 -a $f ${f%.*}.wav ; 
     mv *.wav output/ 
done 
関連する問題