Avatar billede breum Nybegynder
13. juli 2003 - 00:43 Der er 3 kommentarer og
1 løsning

Slette filer der er over 3 dage gamle

Jeg kunne frygtelig godt tænke mig et script der sletter alle filer i et givent katalog, hvis de er over 3 dage gamle.
Avatar billede abpdk Nybegynder
13. juli 2003 - 01:36 #1
Jeg har lige hurtigt lavet og testet følgende, men du må nok hellere selv teste det på noget mindre vigtigt data først :)

#!/usr/bin/perl -w
use strict;

if ($#ARGV == 1) {
    my $now = time();
    if (substr($ARGV[0], length($ARGV[0])-1, 1) ne "/") { $ARGV[0] .= "/"; }
    opendir(DIR, $ARGV[0]) or die $!;
    while (my $filename = readdir(DIR)) {
    if ($filename ne "." && $filename ne "..") {
        my $mtime = (stat($ARGV[0] . $filename))[9];
        if (int(($now - $mtime) / 86400) > $ARGV[1]) {
        print "Deleting: " . $filename . "\n";
        unlink $ARGV[0] . $filename;
        }
    }
    }
    closedir(DIR);
} else {
    print "Usage: ./script.pl <directory> <days>\n";
}
Avatar billede putteand Nybegynder
13. juli 2003 - 02:10 #2
abpdk: Ville det ikke være nemmere i stedet for at have "if (substr($ARGV[0], length($ARGV[0])-1, 1) ne "/") { $ARGV[0] .= "/"; }" at så have "if ($ARGV[0] =~ m/\/$/) { $ARGV[0] .= "/"; }"?
Avatar billede abpdk Nybegynder
13. juli 2003 - 15:33 #3
putteand>> Det ser godt nok meget smart ud, men hvorvidt det er nemmere kan jo diskuteres. Det kan godt være at den med substr er lidt langsomere (jeg ved det ikke), men personligt finder jeg den nemmere at forstå og desuden skal linjen jo kun eksekveres én gang, så evt. optimering ville nok gavne mere inde i while-løkken.
Avatar billede breum Nybegynder
13. juli 2003 - 19:12 #4
ser ud til at virke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester