Сбой rmtree в определенном каталоге - PullRequest
0 голосов
/ 08 июня 2018

Я хочу выполнить поиск в дереве каталогов, удалив все, которые старше 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 '$_' : $!";
}

Это работает для некоторых каталогов, но останавливается при сбоепопытаться с одним каталогом.

Сообщения об ошибках включают в себя

Нет такого файла или каталога, прерванного.

Директория не пуста

Я получаю эти два сообщения много раз для одного конкретного пути, затем он останавливается, не пробуя другие каталоги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...