#!/usr/bin/perl
# Look at */html/tmp starting from ARGV[0] if it exists
# Otherwise start at hardwired value
# For each, if directory, recurse down
# If file, check access time, if > delay, remove
$delay = 777600; # in seconds
$home = '/ud/webwork/base/courses';
$timenow = time();
$old = $timenow-$delay;
if(@ARGV>0) { $home = $ARGV[0]; }
sub get_files {
my $start = shift;
opendir STDIR, $start or die "Cannot open directory $start";
my @allfiles = grep !/^\.\.?/, readdir STDIR;
closedir(STDIR);
@allfiles;
}
sub find_html {
my $start = shift;
my @alldirs = get_files($start);
my $j;
for $j (@alldirs) {
if(-d "$start/$j") {
if("$j" eq "html") {
find_tmp("$start/$j");
} else {
find_html("$start/$j");
}
}
}
}
sub find_tmp {
my $start = shift;
my @alldirs = get_files($start);
my $j;
for $j (@alldirs) {
if(-d "$start/$j") {
if("$j" eq "tmp") {
clean("$start/$j");
}
}
}
}
# Take a directory and recursively search
# If it is a directory, go into it
# If it is a file, check mod time and maybe remove it
sub clean {
my $start = shift;
my @alldirs = get_files($start);
my $j;
for $j (@alldirs) {
my @stat_info = stat "$start/$j";
if(-d _) {
clean("$start/$j");
} else {
if($stat_info[8]<$old) {
# print "Trying to remove $start/$j\n";
unlink("$start/$j") or print("*** Cannot remove $start/$j\n");
}
}
}
}
find_html($home);