2017-11-12 3 views
0

Ich rufe ein kleines Programm auf, um .tap-Dateien (Retrogaming) in .wav-Audiodateien umzuwandeln. Das Programm gibt die neue Datei aus und fügt einfach die Erweiterung .wav hinzu. Beispiel: "file.tap" wird zu "file.tap.wav".Bash: wie man Akten umbenennt, die zwei Erweiterungen haben?

Ich schrieb ein kleines Skript, um die Konvertierung zu Batch. Es funktioniert, aber ich kann die Datei am Ende nicht umbenennen, um die ".tap" im Dateinamen zu entfernen. Beachten Sie, dass die Originaldatei manchmal Klein- oder Großbuchstaben hat.

Hier ist mein Code. Jede Hilfe ist willkommen. Meine Idee war es, die ". TAP" oder ". TAP" im endgültigen Dateinamen zu löschen. nb: Ich muss $ file.wav wie in der Anweisung verwenden, sonst funktioniert es nicht. danken Ihnen für Ihre Hilfe

#!/bin/bash 

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

done 

Antwort

0

Sie können Ihr Skript so etwas wie

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

ändern diese direkt die Ausgabedateien mit dem gleichen Basisnamen nennen wird und Erweiterung „.wav“.

+0

es ist in der Tat ein Teil der Lösung. Am Ende funktioniert es; Das ist der wichtige Punkt. – froggy

0

Nur .tap entfernen, dann fügen Sie .wav; Es ist nicht nötig, einen Ersatz zu machen.

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

Dies entfernt nicht – froggy

+0

.tap, sondern entfernt sie aus den Originaldateien (die .tap als Erweiterung) – froggy

0

Hier ist mein endgültiger Code. Danke an thanaissp. Es funktioniert gut. Glücklich. Dies gilt nicht entfernen „.tap“ in den letzten Dateien

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 
Verwandte Themen