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

转载 2012年03月28日 19:51:43
/* 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);
}

相关文章推荐

java递归实现复制一个文件夹下所有文件的功能

今天开始学习java的IO,学了一个复制文件的例子程序后想自己实现以下如何复制一个文件夹,复制文件的例子程序如下:package io.github.liuzhan214; import java.i...

linux多线程非递归遍历文件夹模拟处理文件

#include #include #include #include #include #include #include #include #include using name...

[算法] 打印文件列表 递归读取文件以及子文件夹中的文件名

代码功能 从命令行接受一个文件夹名; 打印当前文件夹下所有文件名; 递归打印全部子文件夹中的文件名; 使用缩进符号来体现层次结构; 技术支持Java实现 简单队列类 Queue.java 文件读取...

递归读取文件夹及文件

Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte

File 类 用来将文件或者文件夹封装成对象 方便对文件与文件夹进行操作。 File对象可以作为参数传递给流的构造函数 流只用操作数据,而封装数据的文件只能用File类 File类常见方法: 1.创...

把一个固定文件夹内容编入xml中(Dom4J递归)

package WildCat.Xml.com; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce...

LINUX下如何查看一个文件夹/磁盘空间

比如查看home目录的大小: du -s /home 也可以: du -sh /home Linux下查看文件和文件夹大小 当磁盘大小超过标准时会有报警提示,这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)