Shell mp3 renaming

B

Bgag

Hallo!

Ich habe ein kleines Problem. Ich möchte ein Shell-Script schreiben, dass ich mit einem Ordnernamen aufrufen kann, dass mir dann alle mp3-Dateien in diesem Ordner nach bestimmten Regeln umbenennt.

  • Punkte, Leerzeichen und Bindestriche durch Unterstriche ersetzen
  • hintereinander stehende Unterstriche durch einen Unterstrich ersetzen
  • Zahlen und Unterstriche am Anfang des Dateinamens ersetzen
  • alle Dateinmane klein schreiben
  • Dateiendung von _mp3 zu .mp3 korrigieren

Zudem soll es einen optionalen Parameter -r geben, der es ermöglich den Befehl auch auf alle unterverzeichnisse anzuwenden.

Ich habe einen ersten Entwurf gemacht, der leider nicht funktioniert. kann mir jemand helfen?

Zudem hätte ich noch eine Frage die abschließende Verwendung betreffend. Reicht es die fertige Bash-Datei in den /lib/ Ordner zu verschieben, damit ich mit ihr überall arbeiten kann ohne sie mit bash aufzurufen? Wird dann beim arbeiten auch immer das aktuelle verzeichnis verwendet?

MfG, Andy

Code:
for i in "*.[mM][pP]3";
do
        # convert uppercase to lowercase
        n=$(echo $i | tr [:upper:] [:lower:])

        # replace whitespaces with underscores
        $n=$(echo $n | tr [:blank:] _)

        # replace dots with underscores
        $n=$(echo $n | tr . _)

        # replace hypens with underscores
        $n=$(echo $n | tr - _)

        # replace multiple underscores
        $n=$(echo $n | tr -s _)

        # remove numbers at the beginning
        $n=$(echo $n | sed 's/^[0-9]*//')

        # remove underscores at the beginning
        $n=$(echo $n | sed 's/^\_//')

        # correct file ending
        $n=4(echo $n | sed 's/\_mp3/\.mp3/')

        # rename file
        mv -v "$i" "$n";
done
 
Hi.
Ich habe einen ersten Entwurf gemacht, der leider nicht funktioniert. kann mir jemand helfen?
Was heißt das? Was genau funktioniert denn nicht?
Zudem hätte ich noch eine Frage die abschließende Verwendung betreffend. Reicht es die fertige Bash-Datei in den /lib/ Ordner zu verschieben, damit ich mit ihr überall arbeiten kann ohne sie mit bash aufzurufen?
Nein. Ein Skript hat nichts in einem lib Ordner zu suchen - der ist für Bibliotheken.

Um das Skript aufrufen zu können, muss man es ausführbar machen (chmod +x datei) und in ein Verzeichnis speichern welches in der Umgebungsvariable PATH eingetragen ist. Also z.B. /usr/bin

Außerdem sollte das Skript eine entsprechende Shebang Zeile am Anfang haben, damit es mit dem richtigen Interpreter ausgeführt wird.
Wird dann beim arbeiten auch immer das aktuelle verzeichnis verwendet?
Ja, das Verzeichnis wird nicht gewechselt.

Gruß
 

Neue Beiträge

Zurück