Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Bash, Shell, PHP, Python, Perl, CGI
quasan
Posts: 13
Joined: 2003-05-07 18:07

Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by quasan »

Hi Leute,
ich habe folgendes Problem.
Ich habe eine Verzeichnisstruktur mit xy Unterverzeichnissen in denen circa 1500 Dateien liegen.

Die Dateinamen sehen so aus: 1 + Bildname + .jpg

also 1Haus.jpg, 1Garten.jpg usw

Ich möchte nun per Shellscript / Befehl alle 1500 Dateien umbenennen und zwar nach dem Schema, dass nur die 1 ersetzt wird, so dass am Ende folgendes da steht:

1643Haus.jpg, 1643Garten.jpg

Ich hab leider keine Idee, wie ich das hinbekommen soll.
Ã?ber eine schnelle Hilfe wäre ich dankbar.
Roger Wilco
Posts: 5923
Joined: 2004-05-23 12:53

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by Roger Wilco »

man rename
quasan
Posts: 13
Joined: 2003-05-07 18:07

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by quasan »

hach ich liebe diese Antworten.
Aber es nützt auch nichts.
Das Problem ist doch komplexer als ich dachte.

Mit Rename klappt es ja ganz gut, aber was ist wenn es ein Bild gibt das heißt 12garten.jpg die 12 ist ja keine 1 und wenn ich mit rename die eins wegstrippe dann ist die 12 kaputt.
Die Zahlen sind eindeutige Schlüssel in einer Db.
Eigentlich müßt ich wohl in der DB jedes mal nachschauen, inwieweit die Zahl zum Bildnamen gehört oder zum vorgesetzten Index.
Es könnte ja auch

1 + Peter + jpg sein

oder

12 + Peter + jpg

oder 1 + 2Peter +jpg

Ich denke mal, dass es gar nicht möglich ist ohne den DB Zugriff auf die Userids die den Index darstellen das Problem zu lösen.
User avatar
nyxus
Posts: 626
Joined: 2002-09-13 08:41
Location: Lübeck

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by nyxus »

quasan wrote:Mit Rename klappt es ja ganz gut, aber was ist wenn es ein Bild gibt das heißt 12garten.jpg die 12 ist ja keine 1 und wenn ich mit rename die eins wegstrippe dann ist die 12 kaputt.
Du könntest die Dateien auch mit regular Expressions auswählen, in denen Du in der zweiten Stelle einfach auf das nicht-Vorhandensein einer Ziffer matchst.
quasan
Posts: 13
Joined: 2003-05-07 18:07

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by quasan »

das stimmt schon, schließt nur folgenden Fall nicht mit ein

User 1 hat ein Bild namens 5autos.jpg = 15autos.jpg

Es ist ja unmöglich ohne die Datenbank zu erkennen, dass dies Bild zu dem User 1 gehört und nicht zum User 15.

Ich denke ich werd mir irgendwas in php zurechtfummeln.

Trotzdem Danke :)
mr_neutron
Posts: 14
Joined: 2004-09-06 18:57

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by mr_neutron »

bash vorrausgesetzt:

Code: Select all

rename 1 1643 1[A-Za-z]*.jpg
Hilft natürlich auch nicht gegen den 2. Fall
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by [tom] »

Was mir auf die Schnelle so einfällt:

Code: Select all

find . -type f -name "1[a-zA-Z]*" -exec rename 1 1643 '{}' ;

[TOM]
[tom]
Posts: 656
Joined: 2003-01-08 20:10
Location: Berlin

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by [tom] »

BTW: Diese Methode ist auch "safe", da ja nur die Dateien übergeben werden, die wirklich nur mit einer 1 anfangen. Und rename ändert nur das erste Vorkommen. Es dürfen also auch Dateien mit den Namen 1haus1.jpg oder 7auto1.jpg vorkommen.

Allerdings muss nach der 1 (also als 2. Zeichen) ein Buchstabe kommen.


[TOM]
kuntho
Posts: 149
Joined: 2004-10-27 14:22
Location: Küps

Re: Shell: Umbenennen von X Dateien nach bestimmtem Schema?

Post by kuntho »

ich würd ne schleife basteln, die mit dem höchsten zahlenwert (also beispielsweise 123) anfängt umzubenennen und bei jedem durchlauf den zahlenwert um 1 verringert. in dem fall wird 111DATEINAME.jpg früher gefunden (und umbenannt) als 1DATEINAME.jpg. hilft allerdings auch nichts, wenn der dateiname "5autos.jpg" ist. da hilft wirklich nur der zugriff auf die db, denke ich.