Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Datei suchen unter UNIX?

2 views
Skip to first unread message

Juergen Horzuetz

unread,
Dec 10, 1997, 3:00:00 AM12/10/97
to

Hallo,

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

Jochen Schoof

unread,
Dec 11, 1997, 3:00:00 AM12/11/97
to

On Wed, 10 Dec 97 19:30:00 GMT, Juergen Horzuetz wrote:
:
: ich habe folgendes Problem:

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

Marcus Ohlhaut

unread,
Dec 11, 1997, 3:00:00 AM12/11/97
to

>Aber so etwas elegantes scheint es unter UNIX wohl nicht zu geben?

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]

Christophe Saout

unread,
Dec 11, 1997, 3:00:00 AM12/11/97
to

Hallo Jürgen!

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ß]

Juergen Horzuetz

unread,
Dec 23, 1997, 3:00:00 AM12/23/97
to

Hallo Christophe,

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

0 new messages