Mehrere Dateien Umbennen | Zeichenkette aus Dateinamen entfernen

Cardo

Cardo

Mitglied
Hi Leute,

ich brauch mal wieder die hilfe mit einem kleinen Shell-Skript.

Ich hab eine kleine Sammlung an Fun-Bildern. Die hab ich bisher immer mit "Fun - Name" abgespeichert.

Ich möchte das "Fun - " bei jeden Bildnamen entfernen. Da das bei ca. 1000 Bildern per Hand sehr zeitaufwendig und nervig ist, hoffe ich, dass ihr mir mit einem kleinen Script helfen könnt.

Beispiel:
Fun - Female it Experts.jpg
Fun - Fernbedinung.jpg
Fun - First Remote Control.jpg
Fun - Fittness für Frauen.jpg
Fun - Flying Cows.jpg
Fun - For Dummys.jpg
Fun - Foto von hinten.jpg
Fun - Jokes.gif
Fun - Kabelmauer.jpg
Fun - Kampf gegen Dummheit.jpg

Daraus soll das werden:
Female it Experts.jpg
Fernbedinung.jpg
First Remote Control.jpg
Fittness für Frauen.jpg
Flying Cows.jpg
For Dummys.jpg
Foto von hinten.jpg
Jokes.gif
Kabelmauer.jpg
Kampf gegen Dummheit.jpg

:hilfe2:

Ein Lösungsansatz von mir:
for FILE in Pics mv Fun - * *
(Das geht schon mal nicht Xd)
 
Code:
for i in Fun*; do mv "$i" "${i/Fun - /}"; done
 
Danke, funktioniert aber leider nicht.

Ich sollte vielleicht noch erwähnen, dass das auf meiner Windows Kiste ist, und ich das ganze per Cygwin erledigen möchte. (Macht ja sicher nen großen Utnerschied :think: )

Als Fehlermeldung wird folgendes ausgeben:

Code:
mv: cannot stat `': No such file or directory
 
Cardo schrieb:
Danke, funktioniert aber leider nicht.

Ich sollte vielleicht noch erwähnen, dass das auf meiner Windows Kiste ist, und ich das ganze per Cygwin erledigen möchte. (Macht ja sicher nen großen Utnerschied :think: )
Allerdings, soger erheblich.
Wenn ich mal zitieren darf:
Willkommen im Shell-Skript Bereich des Unixboards!

In diesem Forum dreht sich alles um Skripte fur Unix/Linux Shells (bash, ksh, csh ...).
Cygwin zählt da nicht dazu.
Um diesen Befehl auf Cygwin zu portieren, fragst du besser in einem Board oder einer Newsgroup nach, welches sich mit Cygwin beschäftigt.
Ich weiss nicht, ob Cygwin derartige Variablenexpansion unterstütz, aber das ist hier ohnehin OT.

Oder du wirfst einen Blick in das Handbuch zu Cygwin.
Oder du versuchst es mit Windows-eigenen Mitteln per Batchdatei...
Gruß Wolfgang
 
Ich weiss nicht, ob Cygwin derartige Variablenexpansion unterstütz, aber das ist hier ohnehin OT.

Das tut es, Xantis Beispiel läuft bei mir und tut das was es soll.

@Cardo, ich vermute einfach mal das du entweder dich NICHT in dem Verzeichnis befindest in dem die Dateien sind, oder das du die Dateien schreibgeschützt hast.
 
Ich habs hinbekommen ;)

Und zwar musste ich Xantis Beispiel nur um einen parameter erweitern. Und zwar wie folgt:

for i in Fun*; do mv -T "$i" "${i/Fun - /}"; done

Auszug aus man mv:

-T, --no-target-directory
treat DEST as a normal file

Danke für eure Hilfe, hat wunderbar funktioniert!
 
Cardo schrieb:
-T, --no-target-directory
treat DEST as a normal file
Gibt es wohl nur unter Cygwin, mein mv kennt diese Option nicht.

Insofern kein Shellproblem, sondern wirklich Cygwin Sache.

Gruß Wolfgang
 
Nehm ich auch an. Aber da sieht "man" mal wieder, wie sinnvoll RTFM ist.

Gruß,

Matze
 
Etwas seltsam ist diese -T-Option schon. Was passiert, wenn das Ziel als Verzeichnis existiert, man aber mit -T bewegt? Oder wird defaultly bei "mv abc def" ein Verzeichnis def angelegt und abc nach def/abc bewegt?
 
Ich hab eben mal ein paar Tests gemacht:

Test 1: Datei Innerhalb einem Ordner umbennen.
Code:
mv Spiegel.wmv Spiegeltest.wmv
Test: OK

Test 2: Datei von Übergeordnetem Ordner in Untergeordneten Schieben
Code:
mv Spiegel.wmv Vids/Spiegeltest.wmv
Test: OK


Test 3: Mehrere Dateien von Übergeordnetem Ordner in Untergeordneten Schieben
Code:
mv Super* Pics/
Test: OK

Die Option -T wurde in keinem Fall gebraucht.

Jetzt der Hammer:
Test 4: Datei umbenennen und in nicht vorhanden Ordner verschieben
Code:
mv Turtle.zip /Turtle
Test: FAILED

Die Datei ist wie vom erdboden verschluckt. Ich find die nicht mehr :think:
 
Du hast die Beiträge oben nicht durchgelesen...
(Sonst wär dein Beitrag nicht so Off Topic)

Trotzdem thx 4 the Info :)
 
Zurück
Oben