Perl – Bestimmte Dateitypen aus Verzeichnis auslesen
Mitunter kommt es vor das man bestimmte Dateien aus einem Verzeichnis auslesen möchte. Ein Fall für grep.
Verschiedene Beispiele
In diesem Beispiel sollen alle htm und html Dateien aus einem Verzeichnis in ein Array gelesen werden.
CODE:
opendir(DIR,"$pfad") or die "Kann $pfad nicht oeffnen $!n"; @files = grep {/^.*(\.htm$|^.*\.html$)/i} readdir DIR; closedir(DIR);
Möchte man nur alle gif Dateien eines Verzeichnisses auslesen geht das per
CODE:
opendir(DIR,"$pfad") or die "Kann $pfad nicht oeffnen $!n"; @files = grep {/^.*(\.gif$)/i} readdir DIR; closedir(DIR);
Will man einfach nur alle Dateien auslesen ändert man obigen Code so:
CODE:
opendir(DIR,"$pfad") or die "Kann $pfad nicht oeffnen $!n"; @files = grep {!/^(.|..)$/} readdir DIR; closedir(DIR);
Das Array @files kann man dann in einer Schleife nutzen um die Dateien auszugeben.
Oder aber man gibt die gefundenen Verzeichnisinhalte sofort aus
CODE:
opendir(DIR,"$pfad"); for $dateien (grep {!/^(.|..)$/} readdir DIR) { print" $dateien<br>n"; } closedir(DIR);
Kommentare
Dr. Harald Kollmann 28. Januar 2022 um 20:00
Nettes Beispiel!
Eine kleine Anmerkung: die o.G: Beispiele blenden alle Dateien aus, deren Name ein oder zwei Zeichen lang ist.
um nur . und .. aus zu blenden müsste man . ( irgendein Zeichen ) durch vorangestellten \ zu \. = Punkt ersetzen: grep {!/^(\.|\.\.)$/}
grep { !/^\.{1,2}$/} oder grep {!/^[.]{1,2}$/} oder ähnlich tut es auch.