readdir 함수로 파일목록 가져올때 시간순 정렬 할수 있나요??
파일 목록을 출력 할때...
아래 ls 명령어처럼... 시간순으로 파일 목록을 뿌려주려고 합니다.
ls -al | sort +rn +6 +7
readdir에서는 규칙없이 목록만 가져온다고 하는데...
sort를 어떻게 구현 해야 할까요??
조언 부탁 드립니다. (_ _)
int DistributeFileList(char *cpInPath)
{
DIR *dp;
struct dirent *dirp;
struct stat file_stat;
char cFileName[512];
char *pTemp = NULL;
dp = opendir(cpInPath);
if ( dp == NULL )
{
printf(" 입력하신 경로의 디렉토리가 존재하지 않습니다.\n\n");
return 0;
}
int nFileCount = 0;
while( 1 )
{
dirp = readdir(dp);
if ( dirp == NULL )
break;
sprintf(cFileName, "%s/%s", cpInPath, dirp->d_name);
stat(cFileName, &file_stat);
printf(" [%d] %s - %d\n", nFileCount, cFileName, file_stat.st_size);
nFileCount++;
}
closedir(dp);
return nFileCount;
}
void main(int argc, char* argv[])
{
DistributeFileList(argv[1]);
}
끝까지 다 읽어서
끝까지 다 읽어서 배열 등에 저장하시고 정렬하셔야 합니다. 가져오면서 정렬하는 방법은 없습니다.
scandir()을 사용할 수 있습니다.
특정 조건을 만족하는 directory의 entry들을 원하는 방법으로 정렬해서 읽고 싶을 때에는, scandir() 함수를 사용할 수 있습니다.
..
읽어 오신후 소팅하시는 방법을 택해보세요.
가장 무난해 보입니다.
댓글 달기