Filter Dateinamen durch Muster
Brauche ich, um die Suche nach Dateien in einem Verzeichnis, die beginnen mit einem bestimmten Muster, sagen "abc". Ich brauche auch zu beseitigen alle Dateien in dem Ergebnis, dass Ende mit ".xh". Ich bin nicht sicher, wie Sie gehen über es zu tun in Perl.
Ich habe so etwas wie dieses:
opendir(MYDIR, $newpath);
my @files = grep(/abc\*.*/,readdir(MYDIR)); # DOES NOT WORK
Ich auch eliminieren müssen alle Dateien aus dem Ergebnis, dass Ende mit ".xh"
Dank, Bi -
Du musst angemeldet sein, um einen Kommentar abzugeben.
versuchen
wo MYDIR ist ein string mit dem Pfad zu Ihrem Verzeichnis.
Du verwechselst ein regex-Muster mit einem glob-Muster.
Dem Punkt, dass kevinadc und Sinan Unur verwenden, aber nicht zu erwähnen, ist, dass
readdir()
gibt eine Liste mit allen Einträgen im Verzeichnis, wenn man in der Listen-Kontext. Dann können Sie jede Liste operator auf, der. Das ist, warum Sie verwenden können:Also:
gibt eine Liste aller Dateien in MYDIR.
Und:
gibt alle Elemente zurückgegeben, die von
readdir MYDIR
, die den Kriterien entsprechen gibt es.auch, alle Dateien in einem Verzeichnis zugegriffen werden kann durch tun:
Alternativ können Sie das perl-Modul File::find.
Anstatt
opendir
und Filterungreaddir
(vergessen Sie nicht zuclosedir
!), Sie könnte stattdessen verwendenglob
:Wenn Sie kümmern sich nicht um die Beseitigung der
$newpath
vorangestellt, um die Ergebnisse derglob
, loszuwerden, die diemap+
splitpath
.