Rekursives Ändern einer bestimmten Dateiendung

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von DeeDee0815, 21.12.2008.

  1. #1 DeeDee0815, 21.12.2008
    DeeDee0815

    DeeDee0815 Doppel-As

    Dabei seit:
    13.02.2007
    Beiträge:
    130
    Zustimmungen:
    0
    Hallo Leute,

    ich habe meine Musiksammelung komplett im Ogg-Vorbis-Format gespeichert. Seit neustem neigen aber alle möglichen Programme dazu, Ogg-Audio Dateien nicht mehr mit der "allgemeinen" Endung *.ogg abzuspeichern, sondern nehmen *.oga (beispielsweise Rhythmbox beim Auslesen einer CD). So will ich nun meine gesamte Musiksammelung umbenennen.

    Ich benötige also ein Shell-Skript, welches Rekursiv in allen Ordnern $name.ogg ind $name.oga umbenennt.

    Wahrscheinlich ganz einfach, aber ich kenne mich nicht so gut mit Shell-Sktipts aus, daher bin ich auf eure Hilfe angewiesen. ;-)

    Viele liebe Grüße und frohe Weihnachten wünscht DeeDee0815
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gott_in_schwarz, 21.12.2008
    Zuletzt bearbeitet: 21.12.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Code:
    find /your/music -name '*.oga'|while read file; do
        echo "$file" "${file/.oga/.ogg}"
    done
    Aus "echo" mache man ein "mv", wenns die gewünschte Ausgabe erzeugt.
    Mit exec wüsst ich nicht, wie man das mit der brace-expansion gut hinbekommen würde. Und die Substitution funktioniert glaube ich nur, wenn innerhalb des Dateinamens kein ".oga" vorkommt. Also es sollte keine Dateien geben wie "foo.oga.bar.oga" (was ja ein völlig legaler Dateiname ist).

    edit: mit regex könnte man das "sauberer" machen, wenn du dir nicht sicher bist, ob es nicht files mit ".oga" drin gibt (oder gar ein verstecktes Verzeichnis namens "oga", wer weiß...)

    edit: after careful consideration, while-read is a better combination in this case. (than for)
    btw die brace-expansion ist bash. kA ob das auch in der korn-shell funktioniert. (in der zsh gibt es auf jeden Fall Alternativen, ist nur die Frage ob die Syntax dann übereinstimmt.)
     
  4. #3 bytepool, 21.12.2008
    Zuletzt bearbeitet: 22.12.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    du musst in dem Fall ja auch nicht unbedingt Ersetzen, du kannst auch einfach das Dateiende abtrennen, und dann das gewuenschte Ende wieder dranhaengen:
    Code:
    $ file=bla.oga.blub.oga
    $ echo ${file%.oga}.ogg
    bla.oga.blub.ogg
    
    Nur so am Rande.

    Edit:
    Da fehlte noch ein Dollarzeichen im Code...

    mfg,
    bytepool
     
  5. #4 DeeDee0815, 21.12.2008
    DeeDee0815

    DeeDee0815 Doppel-As

    Dabei seit:
    13.02.2007
    Beiträge:
    130
    Zustimmungen:
    0
    Hallo ihr beiden,

    besten dank für eure Hilfe, mit dem ersten Vorschlag konnte ich das Problem einwandfrei lösen, hat alles geklappt. Mit dem zweiten konnte ich leider nichts anfangen, denn als ich den Teil aus dem ersten entsprechend ersetzte, kam keine geänderte Dateiendung, sondern einfach der Ausdruck als Dateiname dabei heraus.

    Vielen Dank und frohe Weihnachten,
    DeeDee0815
     
  6. #5 Gott_in_schwarz, 21.12.2008
    Zuletzt bearbeitet: 21.12.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Code:
    ${file%.oga}
    Joar, ich wusste doch, dass da noch was war. Am besten übrigens noch doublequotes drummachen, dann ists "failsafe".
    Code:
    "${file%.oga}.ogg"

    edit:
    bytepool hat das Dollarzeichen vergessen.
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 bytepool, 22.12.2008
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Upps, fuer die Nachwelt korrigiert, danke fuer den Hinweis. ;)
     
  9. #7 DeeDee0815, 23.12.2008
    DeeDee0815

    DeeDee0815 Doppel-As

    Dabei seit:
    13.02.2007
    Beiträge:
    130
    Zustimmungen:
    0
    Ebenfalls auch nochmal meinen Dank für diesen Hinweis.

    Frohe Weihnachten!
     
Thema:

Rekursives Ändern einer bestimmten Dateiendung

Die Seite wird geladen...

Rekursives Ändern einer bestimmten Dateiendung - Ähnliche Themen

  1. Rekursives Auslesen über 2 Ebenen und Ausführen von mehreren Befehlen

    Rekursives Auslesen über 2 Ebenen und Ausführen von mehreren Befehlen: Hallo zusammen, mein Ziel ist das rekursive Auslesen von 2 Verzeichnisebenen und das ausführen von Befehlen auf den vorhandenen Dateien. Konkret...
  2. Rekursives CHMOD, aber...

    Rekursives CHMOD, aber...: Hallo, ich habe einen blöden Fehler gemacht: Ich habe aus versehen per rekursivem CHMOD es geschaftt, alles in meinem Heimatordner auf das...
  3. Home Verzeichnis ändern

    Home Verzeichnis ändern: Hallo Wollte nicht, dass mein Sohn (16) in die veschränkte WIN Welt hinein wächst und habe für Ihn Linux Mint auf seinem LAPTOP installiert. Er...
  4. Mozilla-Studie: Web schafft Chancen in Entwicklungsländern

    Mozilla-Studie: Web schafft Chancen in Entwicklungsländern: Mozilla hat gemeinsam mit der GSMA eine Studie erstellt, die die Möglichkeiten des Webs in Entwicklungsländern aufzeigt. Eine wachsende Zahl von...
  5. Tastaursignale für ein bestimmtes Programm ändern

    Tastaursignale für ein bestimmtes Programm ändern: Abend, ist es unter Ubuntu möglich die Tastenbefehle die bei einem bestimmten Programm ankommen nur für dieses Programm zu ändern? Wenn also...