|
|
 |

|

 |

| Community » Perl: Allgemeines Forum |
|
Dateien umbenennen / anfügen
|
Seitenanfang |
Hallo, ich habe Verzeichnisse, in denen z.B. 300 Bilder sind. Diese möchte ich fortlaufend ansehen können. Nun haben einige in den Verzeichnissen die Namen 01.jpg bis 99.jpg und danach 100.jpg bis 299,jpg. Die Bilder werden nicht fortlaufend angezeigt, da nach 10.jpg erstmal 100.jpg kommt. Folgendes habe ich probiert:#!/usr/bin/perl -w use File::Copy; $dir="/root/comix/test/co/"; opendir(DIR,$dir); while($file = readdir(DIR)){ if ($file =~ /^[0-9]{2}\.jpg/){ @newfile=(0,$file); print $newfile[0],$newfile[1],"\n"; print @newfile; rename ($file,@newfile); } } closedir (DIR); Ich wollte damit einfach eine 0 vor den Dateinamen hängen. Aber er macht es nciht. Bei einem print zeigt er mir die Dateinamen richtig an, aber er benennt sie nicht um. Die Rechte habe ich mal auf 777 gesetzt. Besten Dank für die Hilfe Marc
Datum: 07.08.2007-09:32

|
re: Dateien umbenennen / anfügen
|
Seitenanfang |
| Hallo! rename erwartet ja auch nur 2 Argumente, den alten und den neuen Dateinamen. Letzterer ist bei dir momentan einfach "0". Den Rest des Arrays @newfile übernimmt er gar nicht. Allerdings hätte er dann alle Dateien in 0 umbennen müssen. rename sollte bei einem Fehlschlag auch den Fehler in $! hinterlegen, frag diese Variable also einfach mal ab. Wenn nicht, dann versuche es mit move(), da wird der Fehler auf jeden Fall in $! gespeichert. File::Copy hast du ja schon eingebunden. Ich würde dir zudem vorschlagen, den neuen Dateinamen mit sprintf zusammenzubauen. Damit bist du wesentlich flexibler. Grüße, Skrilax
Datum: 07.08.2007-11:14

|
re: Dateien umbenennen / anfügen
|
Seitenanfang |
| Warum willst Du die Dateien umbenennen? Lies doch einfach alle Dateien in einen Hash ein: [CODE] $datei = "1.jpg"; @splitdatei = split(/\./,$datei); $bilder{$splitdatei[0]} = $splitdatei[1]; foreach $key (sort keys %bilder) { irgendwas; }
Datum: 12.08.2007-18:49

|
|

|

|

|
 |

|

|
|