개발자/리눅스 Tip

리눅스 디렉토리 및 하위 디렉토리 파일 출력 소스코드

Mosser 2021. 10. 6.
728x90
반응형

리눅스를 사용하면서 디렉토리 및 하위 디렉토리의 파일 이름이 필요한 경우가 생겨서 구현해봤습니다.

 

 

#include <stdio.h> 
#include <stdlib.h> 
#include <sys/types.h> 
#include <dirent.h> 
#include <error.h> 
#include <fcntl.h>
#include <sys/stat.h>
#include <errno.h>
#include <string.h>


void printdir(char *dir){
	DIR *dp;
	struct dirent *entry;
	struct stat statbuf;
        char buff[256];

	if((dp=opendir(dir))==NULL){
		return;
	}
	while((entry=readdir(dp))!=NULL){
		lstat(entry->d_name,&statbuf); //디렉토리를 불러와서 lstat함수로 파일 정보를 읽는다.
		if(S_ISDIR(statbuf.st_mode)){ //파일정보가 디렉토리일 경우 
	        if(!strcmp(".",entry->d_name)||!strcmp("..",entry->d_name)) // .. 및 . 디렉토리는 제외
				continue;
                        sprintf(buff,"%s/%s",dir,entry->d_name);
                        printf("%s\n",buff);
			chdir(buff); //. 및 .. 이 아닌 다음 디렉토리로 진입
			printdir(buff); printdir 함수 재귀함수로 호출

		}else{  // 파일정보가 디렉토리가 아닐 경우
                     sprintf(buff,"%s/%s",dir,entry->d_name);
                     printf("%s\n",buff);
                 }

	}




}
int main() 
{ 
	printdir("/root");
}
반응형

댓글