• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Dateiendungen umbenennen

anduna

Member
Hallo,
ich habe einen ganzen Schwung Dateien mit lame in mp3 umgewandelt mit folgendem im Netz gefundenen Befehl:

for i in *.wav; do lame -b 160 $i; done

dabei wurden alle Dateien fälschlicherweise zu .wav.mp3 umbenannt.
Jetzt überlege ich, wie ich das überzählige .wav loskriege, ohne es hundert mal entfernen zu müssen.
Mit krename habe ich mich schon vergnügt, ohne Erfolg bisher.

Sicher geht es wieder am elegantesten auf der Konsole. Wer kann mir da helfen?
Danke sehr.
 
A

Anonymous

Gast
anduna schrieb:
Sicher geht es wieder am elegantesten auf der Konsole.

Zum Beispiel so hier innerhalb des Verzeichnisses in dem diese Dateien stehen.
Code:
ls *wav.mp3 | while read DATEI
do
 mv $DATEI $(basename $DATEI wav.mp3)mp3
done

robi
 
OP
A

anduna

Member
Da ich fleißig weiter herumgesucht habe, bin ich inzwischen darauf gestoßen bzw habe es für meine Zwecke angepaßt und schon mehrfach getestet. Die Tests haben funktoniert.
Kann ich das auf meine 100 Dateien loslassen?

for i in *.wav.mp3; do mv $i `basename $i .wav.mp3`.mp3; done

Natürlich habe ich ja die Version von Robi.
Danke für die Antworten.
 

abgdf

Guru
Na, mach das aber lieber mit einer KOPIE Deiner mp3s.
Längere Befehlsketten tut man auch gern in ein Skript:

Code:
#!/bin/bash
for i in *.wav.mp3
do
    mv $i `basename $i .wav.mp3`.mp3
done

Nur der Form halber, hab jetzt nicht geprüft, was der Code macht, er sieht für mich etwas merkwürdig aus ...

Kann man als "script" speichern und mit "chmod +x script" ausführbar machen, dann mit "script" ausführen.
 

panamajo

Guru
anduna schrieb:
dabei wurden alle Dateien fälschlicherweise zu .wav.mp3 umbenannt.
Jetzt überlege ich, wie ich das überzählige .wav loskriege, ohne es hundert mal entfernen zu müssen.

Code:
$ rename .wav.mp3 .mp3 *.wav.mp3
 
A

Anonymous

Gast
abgdf schrieb:
Code:
#!/bin/bash
for i in *.wav.mp3
do
    mv $i `basename $i .wav.mp3`.mp3
done

Nur der Form halber, hab jetzt nicht geprüft, was der Code macht, er sieht für mich etwas merkwürdig aus ...

ist so ziemlich das selbe das ich oben schon gepostet habe, nur andere Schleife und die Variable "i" anstatt "DATEI" und als Kommandosubstitution "`" anstatt "$(" das ist aber genau das gleiche, nur man erkennt es schlechter und beim Abtippen ist die Fehlergefahr größer.

Wichtig ist nur wav.mp3`.mp3 hier darf hinter .wav.mp3` kein Leerzeichen kommen.

robi
 
Ihr müsst alle noch was dazulernen :p
Code:
mmv '*.wav.mp3' '#1.mp3'
und
Code:
for i in *.wav.mp3; do
    mv "$i" "${i%.wav.mp3}.mp3";
done;
 
OP
A

anduna

Member
jengelh schrieb:
Ihr müsst alle noch was dazulernen :p

Hat geklappt!
Aber jengelh, das tun wir ja gerne. Bloß die andere Variante hat in den Tests wie gesagt, auch geklappt. Macht es dir was aus, kurz zu erläutern, was der Unterschied ist, bzw warum die andere Version nicht gehen würde?

Danke an alle für die super Hilfe!
 

regexer

Advanced Hacker
jengelh schrieb:
Code:
for i in *.wav.mp3; do
    mv "$i" "${i%.wav.mp3}.mp3";
done;
Stimmt! Die doppelten Anführungszeichen werden gern vergessen. Das führt dann zu Problemen, wenn Leerzeichen im Dateinamen vorkommen. Und gerade bei Musiktiteln dürfte das öfters vorkommen.
 
Oben