Я хочу выполнить поиск в дереве каталогов, удалив все, которые старше 60 дней.
Perl
opendir( my $DH, $DIR ) or die "Error opening $DIR: $!";
my @list = grep { ! /^\.{1,2}$/ } readdir $DH;
@list = map { $DIR . '\\' . $_ } @list;
for ( @list ) {
$path = $_;
opendir( my $DH2, $_ ) or die "Error opening $_: $!\n";
my @listt = grep { ! /^\.{1,2}$/ } readdir $DH2;
for ( @listt ) {
my $qfolder = ( $path . '\\' . $_ );
my $f = stat( $qfolder )->mtime;
$delta = time - $f;
if ( $delta > 5184000 ) {
push @dir, $qfolder;
push @log, ( $qfolder . "Age: " . ( $delta / 86400 ) . " days old" );
$z++;
}
}
}
for ( @dir ) {
rmtree( $_ ) or die "Cannot rmtree '$_' : $!";
}
Это работает для некоторых каталогов, но останавливается при сбоепопытаться с одним каталогом.
Сообщения об ошибках включают в себя
Нет такого файла или каталога, прерванного.
Директория не пуста
Я получаю эти два сообщения много раз для одного конкретного пути, затем он останавливается, не пробуя другие каталоги.