ls命令具有一个-r选项,可以递归的列出子目录中的内容。请编写一个具有同样功能的程序。

简介:
复制代码
 1 #include <unistd.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <dirent.h>
 5 #include <string.h>
 6 #include <sys/stat.h>
 7 /**
 8  * 将数据的目录和深度一起传进来
 9  */
10 void printfdir(char *dir, int depth) {
11 
12     DIR * dp; //对目录进行操作
13     struct dirent *entry; //对目录的数据项进行操作
14     struct stat statbuf;  //用来记录状态信息
15     if ((dp = opendir(dir)) != NULL) {
16         fprintf(stderr, "不能打开目录:%s\n", dir);
17     }
18     chdir(dir); //将当前的工作目重定向
19     while ((entry = readdir(dp)) != NULL) { //使用while来对整个目录进行遍历
20         lstat(entry->d_name, &statbuf);
21         if (S_ISDIR(statbuf.st_mode)) {     //判断是否是目录,如果是目录的话,就递归调用进入下一层
22             if (strcmp(".", entry->d_name) == 0
23                     || strcmp("..", entry->d_name) == 0) {
24                 continue;
25             }
26             printf("%*s%s/\n", depth, " ", entry->d_name);
27             printfdir(entry->d_name, depth + 4);
28         } else {
29             printf("%*s%s/\n", depth, " ", entry->d_name);
30         }
31 
32     }
33     chdir(".."); //如果已经浏览完,将程序当前的工作目录定为父目录
34     closedir(dp);//关闭目录流
35 }
36 
37 int main(void) {
38     printfdir("/home/fjnucse/test",0);
39     return EXIT_SUCCESS;
40 }
复制代码

 本文转自陈哈哈博客园博客,原文链接http://www.cnblogs.com/kissazi2/archive/2013/01/20/2868273.html如需转载请自行联系原作者


kissazi2

相关文章
|
3月前
|
容器
查看文件内容命令
查看文件内容命令
29 0
|
4月前
|
NoSQL Java Linux
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
Linux常用命令(文件目录操作、拷贝移动、打包压缩、文本编辑、查找)
|
5月前
for循环 批处理 查找文件 详细信息 文件名
for循环 批处理 查找文件 详细信息 文件名
38 0
|
5月前
|
Linux
Linux查找多个文件、排除某类文件、匹配文件多处内容
Linux查找多个文件、排除某类文件、匹配文件多处内容
|
3月前
|
Shell
删除常规文件及隐藏文件shell脚本
删除常规文件及隐藏文件shell脚本
59 1
|
9月前
|
Linux 测试技术 CDN
Linux系统 ls命令 – 显示指定工作目录下的文件及属性信息
ls是最常被使用到的Linux命令之一,它来自英语单词list的缩写,就像list单词的英语意思一样。它的功能是列出指定目录下的文件名称和特征。
77 0
|
10月前
|
Shell Perl
把当前目录(包含子目录)下所有后缀为 “.sh” 的文件后缀变更为 “.shell”,之后删除每个文件的第二行
把当前目录(包含子目录)下所有后缀为 “.sh” 的文件后缀变更为 “.shell”,之后删除每个文件的第二行。
54 1
|
11月前
|
XML 数据格式
小工具:批量替换文件夹下所有文件内容中的指定词
函数作用:找出某文件夹下的包含指定关键词文件列表,并将关键字修改为目标字并将新内容保存至源文件
276 0
|
Shell
SHELL脚本递归循环,文件名包含空格的处理办法
SHELL脚本递归循环,文件名包含空格的处理办法
161 0
|
Shell Linux
LINUX SHELL如何递归访问目录(处理包含空格的文件名)
LINUX SHELL如何递归访问目录(处理包含空格的文件名)
158 0