Verzeichnis durchsuchen, unter LINUX
-
Hallo,
ich suche eine Funktion/Methode mit der ich ein Verzeichnis nach bestimmten Files (xxxxxx.log) durchsuchen kann (die auch unter LINUX funktioniert). Die möchte ich dann in ein Array schreiben
Vielen Dank
Gruß
Navigato
-
find /pfad/zum/verzeichnis -iname '*.log'
Das oben würde Dir die log-Files mit der Endung .log auswerfen.
neben find gibt es noch die Möglichkeit mit updatedb (als root) eine Datenbank aller auf dem System befindlichen Datein anzulegen und dann mit *locate .log nach z.B. log-Files zu suchen. Ich selbst verwende aber nur die erste Methode, da die immer aktuell sucht und Du nicht auf die Datenbank angeweisen bist, die halt veraltet sein kann.
-
Navigato schrieb:
Hallo,
ich suche eine Funktion/Methode mit der ich ein Verzeichnis nach bestimmten Files (xxxxxx.log) durchsuchen kann (die auch unter LINUX funktioniert). Die möchte ich dann in ein Array schreiben
Es ist nicht ganz klar, wofür du das brauchst und für welche Platformen. Für C++ gibt es mehrere Wrapper um Filesysteme herum, wie zum Beispiel QDir/QFile in Qt und Boost filesystem.
-
upps
ich brauchte es für C/C++
aber ichhabe schon was gefunden
if( (log_File = _findfirst( "*.log", &c_file )) == -1L ) printf( "No *.log files in current directory!\n" ); else { while( _findnext( log_File, &c_file ) == 0 ) { strcpy(file[i].filename,c_file.name); i++; } _findclose( log_File ); }
-
Guten Tag,
tut mir leid, aber ich kenne keine
Funktionen mit führenden Unterstrichen unter Linux (nur unter Borland C++;)). Kompilierst Du unter Linux ( und mit welchem Compiler)?
Mit freundlichen Grüßen
Linuxfreak
-
Du kannst man: readdir(3) benutzen
hier ein kleines Bsp:
void add_files(TREE* tree, const char* dir, int* id, int root, INFO* info) { DIR* directory; /* wichtig */ struct dirent* dirInfo; /* wichtig */ char buffer[MAX_LENGTH], text[MAX_LENGTH], curr[MAX_LENGTH]; /* wichtig */ int i; if (!tree || !dir || !id) return; buffer[0]=0; for(i=0; i<root; ++i) strcat(buffer, " "); sprintf(text, "%s", dir); strcat(buffer, text); dfprintf(output, buffer); if (NULL==(directory=opendir(dir))) { /* wichtig */ dfprintf(output, " (cannot be opened)\n"); return; } dfprintf(output, " (opened)\n"); buffer[0]=0; for(i=0; i<root+2; ++i) strcat(buffer, " "); while ((dirInfo = readdir(directory)) != NULL) { /* wichtig */ // 4 is directory, 8 is file if(strcmp(dirInfo->d_name, ".") && strcmp(dirInfo->d_name, "..") && strcmp(dirInfo->d_name, ".xvpics")) { /* wichtig */ /* .xvpics for The GIMP */ if (dirInfo->d_type==4) { /* wichtig */ strcpy(curr, dir); if (curr[strlen(curr)-1]!='/') strcat(curr, "/"); strcat(curr, dirInfo->d_name); add_files(tree, curr, id, root+2, info); } else { if (isPicture(dirInfo->d_name, info)) { strcpy(curr, dir); if (curr[strlen(curr)-1]!='/') strcat(curr, "/"); strcat(curr, dirInfo->d_name); if (!haveName(tree, curr)) { if (addElement(tree, curr, ++(*id))) dfprintf(output, "%s%s (added)\n", buffer, curr); else --(*id); } } } } } closedir(directory); }
wobei die wichtige Zeilen mit /* wichtig */ markiert sind. (Ich war ein bisschen zu faul den uninteressanten Code zu entfernen :))
-
Im uebrigen haettest du auch mal in die FAQ schauen koennen
mfg
v R