Multiple Move

Hallo Geeks,

da soll es ein eigenes kleines Tool für die Umbenennung mehrerer Dateien
geben, da ich mich aber nie erinnern kann wie all die speziellen Tools
gennant wurden, möchte ich es mit einen einfachen Shell Befehl erledigen.

Zuerst das eigentliche Problem: Ich habe vor ein paar Wochen meine CDs
mit Hilfe von grip in Audiodateien umgewandelt, sodass ich sie leichter
auf meinen Notebook mitnehmen kann. Ich wollte das offene Format ogg
benutzen und habe bei grip den oggenc eingestellt, jetzt hat das nicht
so richtig geklappt, wahrscheinlich habe ich zum Fehl wieder lame
aktiviert. Als Ergebnis habe ich nun alle Dateien als mp3 aber mit der
Endung ogg.

Da ein

$ mv *.ogg *.mp3

nicht funktioniert. Brauche ich was geeigneteres. Also bin ich auf

$ for f in `ls *.ogg` ; do mv $f $f.mp3 ; done

ausgewichen, das aber die .ogg Endung nicht ersetzt, sondern nur eine
.mp3 Endung hinzufügt, also:

file.ogg -> file.ogg.mp3

Hat jemand ne Ahnung wie ich am besten aus

file.ogg -> file

komme?

Eigentlich ist es jetzt komplizierter, denn ich muss aus

file.ogg.mp3 -> file.mp3

machen, hehe :wink:

Aber dies ist eigentlich nur das selbe, ich muss nur .ogg.mp3 entfernen
können. Nur habe ich keine Ahnung mit was ich das tun soll.

byez
Patrick

Patrick Ohnewein wrote:

$ for f in `ls *.ogg` ; do mv $f $f.mp3 ; done

einfach ist z.B. ein

for f in *.ogg; do mv "$f" "${f%.ogg}.mp3"; done

Siehe auch die Sektion "Parameter Expansion" in der bash-manpage. Selten
gelesen, aber nichts desto trotz interessant.
Wenns komplizierter wird, hilft sed. Ausserdem gibt es wirklich ein
Paket namens "mmv", das ich aber noch nie probiert habe.

Das ist eine FAQ in news:de.comp.os.unix.shell, deshalb liefert google
Tonnen andere (bessere..) Lösungen zu Tage.

HTH, Thomas

Thomas Pircher wrote:

for f in *.ogg; do mv "$f" "${f%.ogg}.mp3"; done

Sorry, habe nicht aufmerksam genug gelesen; Das Problem war jetzt
  file.ogg.mp3 -> file.mp3

also noch mal :
for f in *.ogg; do mv "$f" "${f%.ogg.mp3}.mp3"; done

* Thomas Pircher (tehpeh(a)gmx.net) wrote:

Thomas Pircher wrote:
>
> for f in *.ogg; do mv "$f" "${f%.ogg}.mp3"; done
>
Sorry, habe nicht aufmerksam genug gelesen; Das Problem war jetzt
  file.ogg.mp3 -> file.mp3

also noch mal :
for f in *.ogg; do mv "$f" "${f%.ogg.mp3}.mp3"; done

Ein bissl einfacher sogar :
rename .foo .bar *.foo

Ciao,
Michele

Hei super danke!

Hier die Lösung:
for f in `ls *.ogg.mp3` ; do echo $f ${f%.ogg.mp3}.mp3 ;
done

Ich werde mir diese Section der bash besser anschauen, versprochen!

byez
Patrick

tehpeh(a)gmx.net wrote:

Isch schun guat, a bissl denkn soll i io a :wink:

tehpeh(a)gmx.net wrote:

Aha, also

rename .ogg .mp3 *.ogg

bzw

rename .ogg.mp3 .mp3 *.ogg.mp3

hätte es auch gemacht. Vielleicht erinnere ich mich das nächste Mal
daran. :slight_smile:

Thx
Patrick

baldessari(a)tiscalinet.it wrote: