Hej Så här på rak arm vet jag inte riktigt hur man gör det med opendir m.fl., förutom att kanske gå igenom alla filer i katalogen och kolla extension på dem. hmm... ja jag har tänkt på att använda funktionen system() för att ge ett systemkommando, men problemet är att jag vill kunna läsa in filnamnen jag listar till programmet, och där spara dem. Och det går väl inte att göra med system kommandot? Tror du kan redirecta stdout. tja... borde ju iofs fungera... även om det känns lite klumpigt att behöva mellanspara resultatet i en textfil... risken är ju att det blir i långsammaste laget... men kommer jag inte på nåt annat får jag prova det Jo, jag vet... men borde du inte kunna göra en koll på namnet? (såvida du inte har en directory som slutar på .html) ok... tack... det verkar vara en rätt vettig lösning... ska genast testa det =) ok... nu har jag fått till det så att jag kan lista bara html-filer... men nu skulle jag vilja kunna lista alla kataloger också. Nån som har nån ide om hur man kan kolla ifall en fil är en katalog från c++ ? Känns lite fult, men du kan väl testa med nånting i stil med ok... nu fungerar det som det ska.. tack för hjälpen!lista filer av viss typ i en katalog i linux
Jag håller på att skiva ett konsollprogram i c++ under linux som använder ncurses gränssnittet. I detta program kan man lista filerna i en katalog på hårddisken. För att lista dessa filer använder jag mig av funktionerna i filen dirent.h. Min kod ser ut ungefär så här:
#include <dirent.h>
.
.
.
DIR *dir_p;
struct dirent *dir_entry_p;
dir_p = opendir(katalognamn );
for(i=0; NULL != (dir_entry_p = readdir(dir_p)); i++) // läs allt innehåll i katalogen
filesInDirectory.push_back(dir_entry_p->d_name); // lägg alla lästa filnamn i en vector
.
.
.
Sedan skriver jag helt enkelt ut alla poster i vektorn på skärmen.
Det jag skulle vilja åstakomma är att jag vill kunna lista vissa typer av av filer i en katalog, exempelvis bara lista de filer som är kataloger, eller bara lista html-filer.
Finns det något enkelt sätt att lösa detta på? Finns det kanske någon annan inkluderingsfil som tillhandahåller hjälpfunktioner för att läsa innehållet i en katalog? Jag är tacksam för all hjälp jag kan få, och jag använder g++ kompilatorn.
mvh PetterSv: lista filer av viss typ i en katalog i linux
Annars kan du helst sonika använda funktionen system();
Exempelvis såhär:
system("ls *.html"); //Tror det var så
MVHSv: lista filer av viss typ i en katalog i linux
Sv: lista filer av viss typ i en katalog i linux
system("ls *.html >fil.txt");
annars borde du väl kunna göra ett urval, genom att titta på filnamnet?Sv: lista filer av viss typ i en katalog i linux
Sv: lista filer av viss typ i en katalog i linux
Jag vet inte vad d_name är för sorts sträng, men om det är en vanlig c-sträng (const char *) så borde det väl kunna gå med nånting i stil med:
for(i=0; NULL != (dir_entry_p = readdir(dir_p)); i++){
if(strcmp(dir_entry_p->d_name, ".html") == strlen(dir_entry_p->d_name)-5)
filesInDirectory.push_back(dir_entry_p->d_name);
}
Detta funkar ju iofs ingen koll på om du har en fil som heter typ "a.htmlasd.txt", men min poäng är att du kan göra en ganska enkel test på filnamnet.Sv: lista filer av viss typ i en katalog i linux
Sv: lista filer av viss typ i en katalog i linux
Sv: lista filer av viss typ i en katalog i linux
DIR *dir_p*dir_test;
struct dirent *dir_entry_p;
dir_p = opendir(katalognamn );
for(i=0; NULL != (dir_entry_p = readdir(dir_p)); i++){
dir_test=opendir(dir_entry_p);
if(dir_test!=NULL)
filesInDirectory.push_back(dir_entry_p->d_name);
}Sv: lista filer av viss typ i en katalog i linux