ich habe folgendes Problem:
Mein Programm wird in der Nacht automatisch gestartet und muß überprüfen,
ob in einem Verzeichnis Dateien mit einem bestimmten Namesmuster
enthalten sind. Es können keine, eine oder mehrere Dateien sein.
Aus meiner Atari-Zeit kenne ich zwei Funktionen "findfirst" und
"findnext". Aber so etwas elegantes scheint es unter UNIX wohl nicht zu
geben?
Tschüß, Jürgen
Doch, doch - die POSIX-Funktionen opendir() und readdir() sollten
bei modernen C-Compilern fuer Unix eigentlich schon vorhanden
sein. Sie verhalten sich aehnlich wie die von Dir genannten Funk-
tionen, erlauben allerdings nicht die Angabe eines Musters fuer
den Dateinamen. Vielmehr muss man das Verzeichnis komplett ein-
lesen und eine entsprechende Filterung selbst vornehmen. Da der
entsprechende Mechanismus aber uch in findfirst/next drinnen
steckt, sollte die Geschwindigkeit kein Problem sein.
Gruss
- Jochen
--
Jochen Schoof (http://www-info2.informatik.uni-wuerzburg.de/staff/joscho)
___________________________________________________________________________
\_Address __/ Informatik II, Uni Wuerzburg, Am Hubland, D-97074 Wuerzburg
\_Email ___/ mailto:sch...@informatik.uni-wuerzburg.de
Eleganter, da sich für dich schonmal jemand die Arbeit gemacht hat:
system("find /dir/dir/dir -type file -name name") und den Rückgabewert
auswerten?
- Marcus [PGP]
JH> ich habe folgendes Problem:
JH> Mein Programm wird in der Nacht automatisch gestartet und muß überprüfen,
JH> ob in einem Verzeichnis Dateien mit einem bestimmten Namesmuster
JH> enthalten sind. Es können keine, eine oder mehrere Dateien sein.
Im Gegensatz zum alten DOSen(auch Gemdos)-System muß man unter Unix im
allgemeinen (es gibt leider keinen eindeutigen Standard...) das Verzeichnis wie
eine Datei öffnen, manchmal mit (f)open, manchmal gibt es auch sowas wie
diropen. Wenn du es genauer wissen willst, solltest du mal unter Unix z.B. dir
unzip-Sourcen anschauen im Unterverzeichnis unix. Ich gehe mal davon aus, daß du
dich unter Linux befindest, dort kann man das so lösen: (Beispiel einer
einfachen function, die öffnet, liest, schließt)
----------
void list_dir(char *path_name) /* linux version */
{ DIR *dir; /* directory 'handle' */
struct dirent *entry; /* pointer to directory entry */
dir = opendir(path_name);
if (dir == NULL)
{ fprintf(stderr,"Could not open directory %s.\n",path_name);
return;
}
printf("Entries in directory %s:\n",path_name);
for(; (entry = readdir(dir)) != NULL;)
puts(entry->d_name);
closedir(dir);
}
----------
Wenn du eine bestimmte Datei suchst, oder noch schlimmer mit Wildcards, dann
kann dir das Betriebssystem nicht weiterhelfen. Aber es gibt villeicht eine
Library oder sowas? Beim unzip jedenfalls ist in obengenannter Datei eine Fkt.,
welche in der Lage ist, Wildcards zu parsen.
Auf Wiedermailen, Christophe!
[Newton 0.27ß]
CS>Ich gehe mal davon aus, daß du dich unter Linux befindest,
nein, ist eine größere Kiste von HP, an der mein PC übers Netzwerk hängt.
Aber jetzt ist eh erstmal Weihnachten...
Tschüß, Jürgen