rekursiv suchen / perl

belubaba

belubaba

Tripel-As
Hallo Zusammen,

ich habe ein reichlich banale Frage.
Kann Sie aber nicht lösen da ich keinen blassen Schimmer von Perl habe.

$MeinVerzeichnis
$MeinDateiNamePattern

Wie suche ich recursiv von $MeinVerzeichnis aus nach $MeinDateiNamePattern.

Als Ergebnis brauche ich:

./meinpfad/meineDatei.txt



Gruß und thx

b.
 
Indem du in cpan nach einem Modul kuckst was genau das für dich macht.

Du kannst dir das natürlich auch selber schreiben, da du aber keinen Schimmer von Perl hast würde ich eher eine cpan-lösung nehmen.
 
Hallo

Das richtige Modul nennt sich File::Find
Folgender Einzeiler sucht nach allen Dateien die /test/ enthalten.
Verzeichnisse werden nicht ausgegeben.
Code:
perl -MFile::Find -le 'find (sub{return if /^[.]+$/;print $File::Find::name if ((-f )&&(/test/))},"/home/wolle/temp")'

perldoc File::Find
:rtfm:
Gruß Wolfgang
 
Code:
#!/usr/bin/perl

use strict;
use File::Find;

my $MeinVerzeichnis = "bspdir";
my $MeinDateiNamePattern = "muster";

sub match {print "$_\n" if /$MeinDateiNamePattern/}

find {wanted => \&match, no_chdir => 1}, $MeinVerzeichnis;


Gruss, Xanti

edit: Doh, Wolfgangs Lösung war schneller und besser.
$File::Find::name muss ich mir merken, da braucht man no_chdir nicht.
 
Zuletzt bearbeitet:
selber machen

Indem du in cpan nach einem Modul kuckst was genau das für dich macht.

Du kannst dir das natürlich auch selber schreiben, da du aber keinen Schimmer von Perl hast würde ich eher eine cpan-lösung nehmen.

Hallo,

ich hatte mir mal was gebaut, das sich rekursiv durch einen Verzeichnisbaum wühlt, alle Sonderzeichen in Dateinamen ersetzt, aber nicht im Original-File, sondern sozusagen "gespiegelt" in einer Struktur als Symlink ablegt.

Der Teil, der Verzeichnisse listet, sah so aus:
Code:
local ($searchdir) = $_[0];
  print "Open $searchdir\n";
  opendir(DIR, $searchdir);
  local(@files) = readdir(DIR);
  print "Filelist:\n\n\n";
  print "Dirname=$searchdir\n";
  for(@files){
       print "-> $_";
       if(-d "$searchdir$_"){
          print " - (is directory)";
       }
       print "\n";
  }
  print "\n\n";
  closedir DIR;
Das könnte man jetzt um-/ausbauen.

Der Vorschlag von Wolle ist aber eleganter...
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

Shell Skript beschleunigen

Wir suchen einen Senior Linux-Systemadministrator (m/w)

Wir suchen einen Linux - Systemadministrator (m/w)!

Application Manager (m/w) - im Team Operations Development Hosting

Zurück
Oben