example file Ответов: 1

Как удалить подкаталоги из каталога struture с помощью Perl?


я хочу удалить подкаталог или основной каталог везде, где имя каталога начинается с temp.Как я могу это сделать с помощью perl?

Что я уже пробовал:

#!/usr/local/bin/perl
use File::Path;
$files_deleted=rmtree('/home/rperiasa/output/*/*/temp*');
#print $files_deleted;
unlink $files_deleted;

1 Ответов

Рейтинг:
4

Jochen Arndt

Вы должны перебирать каталоги.

Возможное решение:

use File::Basename;
 
sub ProcessDirectory{
    my ($workdir) = shift;
    print "Processing '$workdir'\n";
    my $mask = $workdir . '/*';
    # glob: Return list of filename expansions for search mask
    # grep -d: Extract directories from list
    my @dirs = grep { -d } glob $mask;
    foreach $d (@dirs)
    {
        # Process sub directories
        ProcessDirectory($d);
        my $dirname = basename($d);
        if ($dirname =~ /^temp*/)
        {
            print " Removing $d\n";
            my $filemask = $d . '/*';
            # Delete all files in directory and then the directory
            #unlink glob $filemask;
            #rmdir $d;
        }
    }
}

ProcessDirectory('/home/rperiasa/output');

Обратите внимание,что я прокомментировал операцию удаления, чтобы вы могли сначала проверить ее.