Avatar billede Max Novice
22. februar 2008 - 10:23 Der er 3 kommentarer og
1 løsning

Finde bestemte filer

Hej alle.

Jeg er i gang med at konvertere et af mine gamle Bash-scripts til Perl, men jeg løber med jævne mellemrum ind i nogle problemer. Jeg prøver at få fat i alle filer i et dir, som opfylder alle af flg. kriterier:

- er en fil (ikke et dir)
- ender på .vmdk
- indeholder ikke -flat i filnavnet

I Bash scriptet var det meget let at gøre vha. et par grep pipes, men jeg er opsat på, at gøre det på den "rigtige" måde i mit nye Perl-script, og derfor ikke bruge shell escapes (back ticks).

Jeg prøvede at klare det med DirHandle, men jeg har lidt svært ved at få implementeret "grep -v <streng>" i den. Her er hvad jeg indtil videre er kommet frem til:

  my $dh=DirHandle->new($currentDir);
  my @files=sort grep {-f}
                map {"$currentDir/$_"}
                grep {!/^\./}
                grep {m/\.vmdk$/}
#                grep {}        # grep -v
                $dh->read();
  foreach my $file (@files)
  {
    print "$file\n";
  }

Som sagt, er det "grep -v" der driller lidt. Jeg ved ikke om det kan gøres. Så vidt jeg kan se skal man evt. komme op med et regex, som ekskluderer et eller andet, men jeg er ikke så skarp til at lave regex'es.

Håber I kan hjælpe mig med dette problem.

Mvh.
Avatar billede nielle Nybegynder
22. februar 2008 - 22:07 #1
Måske sådan?

while (defined($file = glob("*.vmdk")) {
    if (-f $file) {
        unless ($file =~ /-flat/) {
            print "$file\n";
        }
    }
}
Avatar billede Max Novice
23. februar 2008 - 01:55 #2
Hmm.. Simpelt. :)

Tak for det. Smid et svar, så får du points. :)

Mvh.
Avatar billede nielle Nybegynder
23. februar 2008 - 08:30 #3
Svar :^)
Avatar billede Max Novice
24. februar 2008 - 12:01 #4
c",)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester