• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Umbauen von Skript

Wie bauche ich folgendes Skript um, dass nur Dateien
- die, die Endung txt und csv
- und älter als 14 Tage sind
geloescht werden?

Code:
#!c:\xampplite\perl\bin\perl.exe
#Skript zum Dateien loeschen
#letzte Aenderung: 05.01.2007

# Verzeichnispfad anpassen 
# Den Pfad sollte man aber zweimal prüfen vor dem Einsatz
# Ein vorbeugendes Backup kann auch nicht schaden! 
my $verzeichnis = "C:/xampplite/htdocs/Test";

# Alter der Dateien in Sekunden angeben
# Hier zum testen nur 20 Sekunden
my $alter =  60; # In Sekunden angeben!

# Hier wird das Verzeichnis geoeffnet
opendir(DIR, $verzeichnis) or die "Kann Verzeichnis nicht oeffnen: $!";
# Mittels einer while Schleife gelesen
while (my $entry = readdir(DIR)) {
	$entry = $verzeichnis.'/'.$entry;

	#print "\n\n".$entry."\n\n";


	#unless (-f $entry) { next; # Verzeichnisse ausschließen ./ und ../
	#} 

	# Dateistatistik mittels stat bestimmen
	my @stat = stat($entry);

	# JA/NEIN (True/False) Wert
	$weg = 0;
	if ((time - $stat[8]) > $alter) { 
		# Dateien loeschen per unlink
		unlink($entry);
		# Wurde etwas geloescht, Wert ist = 1
		$weg = 1;
	}
}
# Verzeichnis schliessen
closedir(DIR);

# Textausgabe des Loeschstatus, ist Wert 1 oder 0
if ($weg >= 1){
print "Es wurden $weg Dateien geloescht die älter als $alter Sekunden waren.\n";  
} else {
print "Es wurden keine Dateien gefunden die geloescht werden muessen\n";
}

lg,
Kandi
 
Hallo,

ich habe es jetzt nicht durchprobiert, kein System dafür, aber so kann es ca. hinhauen:

Code:
#!c:\xampplite\perl\bin\perl.exe 
#Skript zum Dateien loeschen 
#(c) Andreas Knabl 
#letzte Aenderung: 05.01.2007 

# Verzeichnispfad anpassen 
# Den Pfad sollte man aber zweimal prüfen vor dem Einsatz 
# Ein vorbeugendes Backup kann auch nicht schaden! 
my $verzeichnis = "C:/xampplite/htdocs/Test"; 

# Alter der Dateien in Sekunden angeben 
# Hier zum testen nur 20 Sekunden 
my $alter =  1209600; # In Sekunden angeben!; 60 Min * 60 Sek * 24 h * 14 Tage = 1209600

# Hier wird das Verzeichnis geoeffnet 
opendir(DIR, $verzeichnis) or die "Kann Verzeichnis nicht oeffnen: $!"; 
# Mittels einer while Schleife gelesen 
while (my $entry = readdir(DIR)) { 
   $entry = $verzeichnis.'/'.$entry; 

if ($entry == txt) { #leider weiss ich jetzt nicht wie die regexp hier genau aussieht!
#tue irgendwas
}
else {
#tue nichts
}

   #print "\n\n".$entry."\n\n"; 


   #unless (-f $entry) { next; # Verzeichnisse ausschließen ./ und ../ 
   #} 

   # Dateistatistik mittels stat bestimmen 
   my @stat = stat($entry); 

   # JA/NEIN (True/False) Wert 
   $weg = 0; 
   if ((time - $stat[8]) > $alter) { 
      # Dateien loeschen per unlink 
      unlink($entry); 
      # Wurde etwas geloescht, Wert ist = 1 
      $weg = 1; 
   } 
} 
# Verzeichnis schliessen 
closedir(DIR); 

# Textausgabe des Loeschstatus, ist Wert 1 oder 0 
if ($weg >= 1){ 
print "Es wurden $weg Dateien geloescht die älter als $alter Sekunden waren.\n";  
} else { 
print "Es wurden keine Dateien gefunden die geloescht werden muessen\n"; 
}

Lg
Byron
 
Kandi schrieb:
Wie bauche ich folgendes Skript um, dass nur Dateien
- die, die Endung txt und csv
- und älter als 14 Tage sind
geloescht werden?
Wieso so umständlich... und wieso immer das Rad neu erfinden (außer wenn man Programmieren lernen möchte ;-) )
Code:
find /start -type f -mtime +14 -print0 | xargs -0 rm -f
it's so easy... außerdem ist bei euch $weg immer 0 oder 1, aber nie mehr.
 
Du hast teilweise recht, aber bei einem hast Du Dich vertan, Du schreibst in der Shell und nicht in Perl!

Das sind 2 voneinander unabhängige Programmiersprachen!

Zudem, gibt es in Windows schon eine Linux - Shell?

Code:
my $verzeichnis = "C:/xampplite/htdocs/Test";

Lg
Byron
 
Das ist schon richtig, dass man Fremdbefehle mit system ausführen kann, aber das wäre dann so, als würde ich einen Apfel mit einer Birne schälen!
 
Oben