Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6246[/thread]

Wie benennt man ein Verzeichnis um?



<< |< 1 2 >| >> 17 Einträge, 2 Seiten
bony
 2004-05-10 23:59
#82200 #82200
User since
2004-04-30
18 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

wie benennt man denn am besten ein Verzeichnis um? Geht das nur mit File::Copy und move() oder gibt es da was besseres?

Christoph
esskar
 2004-05-11 00:41
#82201 #82201
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
würde mir ne rekursive funktion bauen!
Free Faq
 2004-05-11 01:13
#82202 #82202
User since
2003-09-10
141 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
 &Rename("original-ordner-name","neuer-ordner-name");

sub Rename {
rename($_[0]"$_[1]);
}
Haut mich nicht, ich bin ein Noob!
jan
 2004-05-11 01:18
#82203 #82203
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
freefaq: du baust eine wrapper-sub namens Rename um eine builtin namens rename? mh, magst du keine kleinbuchstaben-subs in deinem haupt-code oder hat das irgendeinen anderen grund?
ptk
 2004-05-11 13:35
#82204 #82204
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Man verwendet einfach "rename", wenn sich Quelle und Ziel im gleichen Filesystem befinden.
esskar
 2004-05-11 13:40
#82205 #82205
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=ptk,11.05.2004, 11:35]wenn sich Quelle und Ziel im gleichen Filesystem befinden.[/quote]
auf sowas wollte ich mich nicht verlassen wollen!
ptk
 2004-05-11 13:53
#82206 #82206
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Wenn sich Quelle und Ziel im gleichen Verzeichnis befinden, kann man sich darauf verlassen.

Ueblicherweise ist das Verschieben von Verzeichnissen zwischen Filesystemen bei Unix-mv so implementiert, dass zuerst ein "cp -pR" gemacht wird und bei Erfolg der alte Baum geloescht wird. Mit reinen Perl-Mitteln koennte man das rekursive Kopieren z.B. mit File::NCopy machen und das Loeschen des alten Baums mit File::Path::rmtree.

Schade, dass File::NCopy nicht Teil der Standard-Perl-Distribution ist.
esskar
 2004-05-11 14:15
#82207 #82207
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
man sollte aber so programmieren, dass alle Wenn's und Aber's abgedeckt sind!
bony
 2004-05-11 14:44
#82208 #82208
User since
2004-04-30
18 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

danke, die Funktion rename() wird es für meine Zwecke tun. Ich habe auf dem Server eine menge Bilderverzeichnisse, deren Namen eine passende Ordnungszahl hinzugefügt werden soll, die jeweils aus einer Datenbank gelesen wird. Ich habe einfach keine Lust, jeden einzelnen Ordner von Hand umzubenennen und möchte mir dazu ein einfaches Skript basteln.

Was ist eine "rekursive Funktion", bzw. was bedeutet "rekursives Kopieren"?
ptk
 2004-05-11 14:58
#82209 #82209
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Klar, wenn man nicht weiss, woher der Input fuer Quelle und Ziel kommt. Wenn man aber weiss, dass sich beide Verzeichnisse auf dem gleichen Filesystem befinden, dann braucht man den anderen Fall ja gar nicht abdecken, oder?

Beispiel: zurzeit mache ich ein Update von meinem Heimrechner auf einen WWW-Server per rsync. Leider ist rsync nicht atomar und somit ist waehrend der Zeit des Updates meine Website teilweise out-of-sync (es hat sich aber noch niemand beschwert :-). Um das zu verhindern, werde ich das Update so umstellen: lokales rsync auf dem Server von Webverzeichnis nach Webverzeichnis.tmp, rsync von meinem Rechner nach Webverzeichnis.tmp, und jetzt der kritische Part:
rename Webverzeichnis Webverzeichnis.old
rename Webverzeichnis.tmp Webverzeichnis
rename Webverzeichnis.old Webverzeichnis.tmp
Das ist leider immer noch nicht atomar, duerfte aber schnell genug sein :-) Ein rekursives Kopieren/Verschieben kommt hier nicht in Frage.
<< |< 1 2 >| >> 17 Einträge, 2 Seiten



View all threads created 2004-05-10 23:59.