SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] Finde alle filer rekursivt som matcher *.jpg



Hejsa,

Prøv noget i retning af

foreach my $file (<$my_dir/*/*/*.jpg>) {
   push(@files, $file);
}

hvilket leder i 2 niveauer. Hvis du har brug for et vilkårligt antal
niveauer kan du enten bruge modulet File::Find eller skrive noget
rekursivt kode a la

sub find_jpg {
    my ($dir, $array_ref) = @_;
    local *DIR;

    opendir(DIR, $dir) or die $_;
    while ($entry = readdir(DIR)) {
        if (($entry eq "..") or ($entry == ".")) {
            next;
        }
        $file = "$dir/$entry";
        if (-d $file) {
            find_jpg($file, $array_ref);
        } else {
            push(@$array_ref, $file);
        }
    }
    closedir(DIR);
}

find_jpg($list = []);

Held og lykke!

Hilsen

Anders Sønderberg Mortensen


On Sun, 14 Jul 2002, Lars H. wrote:

> Hvordan laves en liste over alle *.jpg filer rekursivt. Svaret skal bruges
> som en liste, @files.
>
> Følgende er IKKE måden at gøre det på da det giver en scalar med det hele.
>
>
> $files = system("find /mnt/flash -name \"*.jpg\" ");
> print "$files";
>
>



 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:54
Denne side vedligeholdes af MHonArc .