您的位置:首页 > 运维架构 > Linux

Linux下递归打印一个文件夹下的所有文件夹和文件

2012-03-28 19:51 549 查看
/* We start with the appropriate headers and then a function, printdir,

which prints out the current directory.

It will recurse for subdirectories, using the depth parameter is used for indentation. */

#include <unistd.h>

#include <stdio.h>

#include <dirent.h>

#include <string.h>

#include <sys/stat.h>

#include <stdlib.h>

void printdir(char *dir, int depth)

{

DIR *dp;

struct dirent *entry;

struct stat statbuf;

if((dp = opendir(dir)) == NULL)

{

fprintf(stderr,"cannot open directory: %s\n", dir);
return;

}
chdir(dir);

while((entry = readdir(dp)) != NULL)

{

lstat(entry->d_name,&statbuf);

if(S_ISDIR(statbuf.st_mode))

{

/* Found a directory, but ignore . and .. */

if(strcmp(".",entry->d_name) == 0 ||

strcmp("..",entry->d_name) == 0)

continue;

printf("%*s%s/\n",depth,"",entry->d_name);

/* Recurse at a new indent level */

printdir(entry->d_name,depth+4);

}

else printf("%*s%s\n",depth,"",entry->d_name);

}

chdir("..");

closedir(dp);

}

/* Now we move onto the main function. */

int main()

{

printf("Directory scan of /home:\n");

printdir("/home/xchwu/Code",0);

printf("done.\n");

exit(0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐