Thread Verzeichnis rekursiv löschen
(26 answers)
Opened by hcx at 2011-07-06 19:04 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 #!/usr/bin/perl -w # Skript loescht saemtliche Dateien im Ordner, den wir hier eingeben und wenn der Ordner leer ist loescht es den leeren Ordner # Symlinks werden nicht gelöscht use strict; my $sammel_pfad = "/home/uli/logs"; my $log_datei = "$sammel_pfad/loesch_logfile.txt"; #################################################################################################################### print "In welchen Ordner soll ich alle Dateien loeschen?\n"; my $ordner = <STDIN>; chomp $ordner; print "Danke soll ich dann wirklich alle Dateien in $ordner loeschen?\n"; my $entscheidung = <STDIN>; chomp($entscheidung); if($entscheidung eq 'j') { print "#\n#ALLE Dateien in $ordner werden gelöscht\n#\n"; }else { print "#\n#Breche das Programm ab \n#\n"; die; } ############################################################################################################################ print "#\n#\n# Schreibe ab jetzt in Log Datei $log_datei !\n#\n#\n"; open(LOGFILE, '>>', $log_datei") or die "Kann LOG_Datei $log_datei nicht oeffnen: $!\n"; loesche($ordner); close LOGFILE; #################################################################################################################### # Funktion loescht nacheinander mittels foreach Schleife datei fuer datei im Ordner sub loesche { my ($ordner) = @_; # Funktion loesche wird mit Argument $ordner aufgerufen opendir(my $fh, $ordner)or die "Fehler: Kann Ordner '$ordner' kann nicht oeffnen: $!\n"; my @remove = readdir($fh); close($fh); foreach my $datei (@remove) { # . und .. sollen nicht geloescht werden next if ($datei eq "." or $datei eq ".."); if (-l "$ordner/$datei") { print "Habe einen Link $datei gefunden loesche diesen nicht\n"; next; # überspinge rest der schleife überspringen } if (-d "$ordner/$datei") { print "Habe ein Unterverzeichnis $ordner/$datei gefunden rufe die Funktion rekursiv auf \n"; print "Befinde mich im Unterverzeichnis $ordner/$datei \n"; loesche("$ordner/$datei"); print "Funktion rekursiv aufgerufen lösche alle Dateien im Unterverzeichnis $ordner/$datei \n"; print LOGFILE "#\n#\n#\n"; print LOGFILE "Habe den Ordner $datei geloescht!\n"; } else { delete("$ordner/$datei") or die $!; print LOGFILE "#\n#\n#\n"; print LOGFILE "Habe die Datei $datei geloescht!\n"; } } # ordner leer? if(!glob("$ordner/*")) { print "Lösche jetzt den Ordner $ordner \n"; # unlink löscht dateien im Ordner rmdir($ordner) or die $!; # rmdir löscht leere Verzeichnisse also den leeren Ordner } else { print "Lösche $ordner nicht, ist nicht leer \n"; } } Last edited: 2011-07-07 16:17:51 +0200 (CEST) |