运行效果:

代码:

 #include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <dirent.h>
#include <sys/stat.h> void MyTree(char szPath[],int deep)
{
//目录用于遍历
DIR *pDir;
//用于存储文件信息
struct dirent *pDent;
//子目录名字
char szSubPath[PATH_MAX]; //用于判断文件的类型
struct stat stInfo;
//用来遍历层数,格式输出
int i; //打开当前目录,获取目录列表
pDir = opendir(szPath);
//如果打开失败
if(pDir == NULL)
{
perror("Fail to opendir");
return;
} //不断循环
while()
{
//依次读取文件信息
pDent = readdir(pDir);
//如果读取失败,当前递归结束
if(pDent == NULL)
{
break;
} //如果获得了文件信息 //过滤掉当前目录(.)和上一层目录 (..)
if(strcmp(pDent->d_name,".")== || strcmp(pDent->d_name,"..")==)
{
continue;
} //格式输出
for(i=;i!=deep;i++)
{
printf("│ ");
} //如果是目录文件
if(pDent->d_type == DT_DIR)
{
//红色
printf("├── \033[0;31m%s\033[0m\n",pDent->d_name);
sprintf(szSubPath,"%s/%s",szPath,pDent->d_name);
MyTree(szSubPath,deep+);
}
else
{
stat(pDent->d_name,&stInfo);
//判断是否是普通文件
if(S_ISREG(stInfo.st_mode))
{
//判断是否有执行权限
if(stInfo.st_mode & )
{
//青色
printf("├── \033[1;32m%s\033[0m\n",pDent->d_name);
}
//不能执行的文件
else
{
printf("├── %s\n",pDent->d_name);
}
}
//是否是一个块文件
else if(S_ISFIFO(stInfo.st_mode))
{
printf("├── \033[1;42m%s\033[0m\n",pDent->d_name);
}
//其他文件
else
{
printf("├── %s\n",pDent->d_name);
} }
}
closedir(pDir);
} int main(int argc,char **argv)
{
//char szPath[PATH_MAX]; if(argc == )
{
chdir(argv[]);
} //getcwd(szPath,PATH_MAX);
//MyTree(szPath,0);
MyTree(argv[],); return ;
}

最新文章

  1. Atitit 边缘检测原理attilax总结
  2. 【代码笔记】iOS-3DES+Base64加密解密
  3. [MSSQL] Useful SQL Scripts - CalendarBase
  4. Hibernate学习---第五节:普通组件和动态组件
  5. jQuery Mobile的学习 jQuery Mobile工具栏、标题栏、页脚栏的定位学习
  6. python打印详细的异常信息
  7. Speech Patterns (string)
  8. asp.net_MVC_jq三级联动
  9. Sql Server 面试题
  10. Oracle 12C 新特性 - “可插拔数据库”功能
  11. 一次ARP病毒排查
  12. JDBC(7)—DAO
  13. appJar 界面效果
  14. httpService 和 WebService接口协议
  15. [SoapUI] Datasink怎么显示每次循环的结果
  16. VFL使用
  17. 菜鸟vimer成长记——第2.2章、visual模式
  18. R语言实战(七)图形进阶
  19. CUDA Samples: matrix multiplication(C = A * B)
  20. poj 2337(单向欧拉路的判断以及输出)

热门文章

  1. jquery自动完成插件的使用
  2. Linux下实现视频读取
  3. hdu 2485 Destroying the bus stations 最小费用最大流
  4. hdu3572Task Schedule 最大流,判断满流 优化的SAP算法
  5. 【airtest】iOS,Android 依托 jenkins 并行跑
  6. 10分钟 PySimpleGUI 图形界面入门
  7. 安装Mysql的一些问题,比如Net Connect 卸载不掉,注册表相关操作
  8. CSS - display:inline-block 相邻元素间有4px的空白间距
  9. webstorm + babel
  10. JavaScript 原型 原型链