#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
void do_search_dir(char *path) {
DIR *dir;
char fullpath[1024],currfile[1024];
struct dirent *s_dir;
struct stat file_stat;
strcpy(fullpath,path);
dir=opendir(fullpath);
while ((s_dir=readdir(dir))!=NULL) {
if ((strcmp(s_dir-> d_name, ". ")==0)||(strcmp(s_dir-> d_name, ".. ")==0)) continue;
sprintf(currfile, "%s/%s ",fullpath,s_dir-> d_name);
stat(currfile,&file_stat);
if (S_ISDIR(file_stat.st_mode))
do_search_dir(currfile);
else
printf( "%s\n ",currfile);
}
closedir(dir);
}
int main(int argc,char **argv) {
do_search_dir(argv[1]);
}
大致框架如此,代码没调试过,可能有bug。