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);

Weitere Beiträge

[blogposts orderby=“date“ order=“desc“ layout=“small“ category_name=““ tag=““]

1 Kommentar zu „Perl – Bestimmte Dateitypen aus Verzeichnis auslesen“

  1. 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.

    Antworten

Schreibe einen Kommentar