ubuntuusers.de

Rename funktioniert nicht trotz (scheinbar) richtigem Syntax

Status: Gelöst | Ubuntu-Version: Ubuntu 10.04 (Lucid Lynx)
Antworten |

PPJens

Avatar von PPJens

Anmeldungsdatum:
10. Mai 2010

Beiträge: 9

Hallo liebe Linux-User!

Ich habe mich in letzter Zeit über "Regular-Expressions" belesen und habe daraufhin versucht, meine komplette Musiksammlung umzubenennen, da jeder Titel mit zwei Ziffern anfängt (01titel, 02titel usw.). In anderen Threads bin ich dabei auf den dazugehörigen Befehl gestoßen und habe versucht, mein Problem zu lösen:

Im Terminal habe ich eingegeben:

rename -n 's/^[0-9]+//' /home/jens/Musik/*/*/*.* (Erster Asterisk im Pfad für den Komponisten, zweiter für das Album und *.* für "Titel.Format"

Nur warum gibt mir das Terminal nicht aus, was verändert werden würde?

Wenn ich den Befehl richtig verstehe steht da:

Substituiere alle Zahlen ([0-9]) die am Anfang der Zeile (^) mehr als einmal vorkommen (+) durch Nichts (//).

Wo ist da mein Fehler?

Ich bin über jede Hilfe dankbar! ☺

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Die Option "-n" gibt an das keine veränderungen gemacht werden, nur so ist die Option eigentlich sinnlos, du solltest noch "-v" nutzen. also "rename -nv 's///'" Das "-v" ist verbose und gibt dir immer an was gemacht wird. Wenn du dann zufrieden bist musst du das "-n" weg lassen zum wirklichen verändern.

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Der Ausdruck wird nicht nur auf den Dateinamen, sondern auf den kompletten übergebenen Pfad angewandt. Entsprechend muss das Muster anders lauten, z. B. 's:/[0-9]+([^/]*)$:/$1:'. Übrigens heißt es im Deutschen die Syntax.

Zombie_im_Bademantel

Avatar von Zombie_im_Bademantel

Anmeldungsdatum:
13. April 2005

Beiträge: Zähle...

Das liegt daran, dass am Anfang der Zeile keine Ziffern vorkommen, sondern "/home/jens/Musik/". "/home/jens/Musik/*/*/*.*" wird ja durch "/home/jens/Musik/Artist/Album/File.Extension" ersetzt, die Ziffern kommen also vor dem letzten "/".

Lass rename also nach einem "/" gefolgt von zwei Ziffern suchen:

rename -n 's/\/[0-9]+//' /home/jens/Musik/*/*/*.*

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Zombie im Bademantel schrieb:

Lass rename also nach einem "/" gefolgt von zwei Ziffern suchen:

rename -n 's/\/[0-9]+//' /home/jens/Musik/*/*/*.*

Das funktioniert nicht, wenn ein Ordner in dem Pfad existiert, der mit Zahlen anfängt (z. B. 50 Cent, 10cc). In diesem Fall versucht rename an dem Ordnernamen herumzumurksen. Mein Ansatz vermeidet das, indem hinter den Ziffern explizit nur Zeichen außer einem / zugelassen werden.

Zombie_im_Bademantel

Avatar von Zombie_im_Bademantel

Anmeldungsdatum:
13. April 2005

Beiträge: 655

Hello World schrieb:

Zombie im Bademantel schrieb:

Lass rename also nach einem "/" gefolgt von zwei Ziffern suchen:

rename -n 's/\/[0-9]+//' /home/jens/Musik/*/*/*.*

Das funktioniert nicht, wenn ein Ordner in dem Pfad existiert, der mit Zahlen anfängt (z. B. 50 Cent). In diesem Fall versucht rename an dem Ordnernamen herumzumurksen. Mein Ansatz vermeidet das, indem hinter den Ziffern explizit nur Zeichen außer einem / zugelassen werden.

Stimmt, ich bin von einem guten Musikgeschmack ausgegangen 😬 😉

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

Zombie im Bademantel schrieb:

Stimmt, ich bin von einem guten Musikgeschmack ausgegangen 😬 😉

Wenn mir der Name eines anderen Interpreten oder Albums eingefallen wäre, dessen Name mit einer Zahl anfängt, dann hätte ich garantiert den gewählt.

PPJens

(Themenstarter)
Avatar von PPJens

Anmeldungsdatum:
10. Mai 2010

Beiträge: 9

Hello World schrieb:

's:/[0-9]+([^/]*)$:/$1:'

Hat wunderbar funktioniert! Nur verstehe ich die Bedeutung der Doppelpunkte nicht? In meiner pdf-Datei mit den Regular-Expressions wird nicht deutlich, was diese bewirken? Könnte mir das noch jemand erklären?

Vielen Dank an Alle!

Edit:

Ist egal, ich werd mich weiterhin darin belesen!

Nochmal vielen Dank!

Zombie_im_Bademantel

Avatar von Zombie_im_Bademantel

Anmeldungsdatum:
13. April 2005

Beiträge: 655

PPJens schrieb:

Hello World schrieb:

's:/[0-9]+([^/]*)$:/$1:'

Hat wunderbar funktioniert! Nur verstehe ich die Bedeutung der Doppelpunkte nicht? In meiner pdf-Datei mit den Regular-Expressions wird nicht deutlich, was diese bewirken? Könnte mir das noch jemand erklären?

Das erste Zeichen nach dem "s" in der regular expression wird als Trennzeichen genutzt. "Hello World" benutzt hier die Doppelpunkte statt des Slashs als Trennzeichen, da auch nach einem solchen gesucht werden soll und dieses ansonsten per Backslash hätte escaped werden müssen ("\/").

Antworten |