Don: verzeichnisstruktur durchsuchen mit perl

Beitrag lesen

Hallo,
die folgende Funktion (gefunden bei www.rootshell.com) legt einmal ein array mit Dirs und zum anderen ein array mit txt-Files an (durch den rekursiven Auffruf werden alle SubDirs abgearbeitet):

sub traverse {
    local($dir) = shift;
    local($path);
    unless (opendir(DIR, $dir)) {

»»  warn "Can't open $dir\n";
»»  closedir(DIR);
»»  return;

}
    foreach (readdir(DIR)) {

»»  next if $_ eq '.' || $_ eq '..';
»»  $path = "$dir/$_";
»»  if (-d $path) {  # a directory

# dirs als Array anlegen
  push(@dirs, $path);
     &traverse($path);

»»  } elsif (-f _) { # a plain file

# print "$path
\n";
     # or do something you want to
  # ich werde ein Array anlegen
  if(/.txt/i){push (@files, $path);}

»»  }

}
    closedir(DIR);
}

Es geht auch einfacher:

Die Funktion 'find' ruft für alle Files in den angegebenen Verzeichnissen (incl. der jeweiligen Unterverzeichnisse) die funktion 'function' auf. Dort können dann die Modifikationen an den Files vorgenommen werden.

use File::Find;
find(&function, $path1, $path2, ...);
sub function { ... }