tree命令的c语言实现.

#include<stdio.h>
#include<dirent.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<string.h> #define MAXNAME 200
void s_printf(char *filename,int depth);
void s_dirwalk(char *dirname,int depth,void (*fcn)(char *,int));
void listdirtree(char *dirname,int depth); int main(int argc,char **argv)
{
if(argc == )
listdirtree(".",);
else
{
printf("%s\n",argv[]);
listdirtree(*++argv,);
}
return ;
} void listdirtree(char *dirname,int depth)
{
struct stat stbuf;
if((stat(dirname,&stbuf)) == -)
{
fprintf(stderr,"listdirtree:can't read file %s information!\n",dirname);
return;
}
if((stbuf.st_mode & S_IFMT) == S_IFDIR)
s_dirwalk(dirname,depth,listdirtree);
} void s_dirwalk(char *dirname,int depth,void (*fcn)(char *,int))
{
char name[MAXNAME];
struct dirent *fip;
DIR *dp;
if((dp = opendir(dirname)) == NULL)
{
fprintf(stderr,"s_dirwalk:can't open %s\n",dirname);
return;
}
while((fip = readdir(dp)) != NULL)
{
if(strcmp(fip->d_name,".") == || strcmp(fip->d_name,"..") == )/*skip directory '.' and '..'*/
continue;
if(strlen(dirname) + strlen(fip->d_name) + > sizeof(name))
{
fprintf(stderr,"s_dirwalk:%s/%s is too long!\n",dirname,fip->d_name);
return;
}
else
{
s_printf(fip->d_name,depth);
sprintf(name,"%s/%s",dirname,fip->d_name);
(*fcn)(name,depth + );
}
}
closedir(dp);
} void s_printf(char *filename,int depth)
{
while(depth-- > )
printf("| ");
printf("|--");
printf("%s\n",filename);
}

linux命令: tree的c实现的更多相关文章

  1. Linux命令——tree

    参考:Linux tree Command Tutorial for Beginners (6 Examples) 简介 Linux tree命令用于以树状图列出目录的内容. 执行tree指令,它会列 ...

  2. Linux命令--tree

    目录 tree 最常用 带颜色显示2级目录 排除显示某个目录 tree tree -C :颜色显示 tree -f : 显示文件全路径 tree -L 2 :只显示2层 tree -P *.pl :只 ...

  3. linux之tree命令

    linux下tree命令的用法解释 2018年03月22日 ⁄ RakSmart教程 ⁄ 共 583字 ⁄ 字号 小 中 大 ⁄ linux下tree命令的用法解释已关闭评论 tree命令,主要功能是 ...

  4. 11 个很少人知道但很有用的 Linux 命令

    Linux命令行吸引了大多数Linux爱好者.一个正常的Linux用户一般掌握大约50-60个命令来处理每日的任务.Linux命令和它们的转换对于Linux用户.Shell脚本程序员和管理员来说是最有 ...

  5. Linux命令随笔

    Linux命令总结 man ==命令帮助; help ==命令的帮助(bash的内置命令); ls ==list,查看目录列表; -ld:查看目录权限; -l:(long)长格式显示属性; -F:给不 ...

  6. 别出心裁的Linux命令学习法

    别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...

  7. Linux命令(22)find的使用

    在linux下面工作,有些命令能够大大提高效率. 比如说find命令,他哥俩可以算是必会的linux命令,几乎每天都要用到他们. find命令 find命令的一般形式 find命令的常用选项及实例 f ...

  8. Java开发必会的Linux命令

    Java开发必会的Linux命令 作为一个Java开发人员,有些常用的Linux命令必须掌握.即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令.因为很多服务器 ...

  9. [z]Java开发必会的Linux命令

    1.查找文件 find / -name filename.txt 根据名称查找/目录下的filename.txt文件. find . -name "*.xml" 递归查找所有的xm ...

随机推荐

  1. easyui学习日记20141213

    一.前言 对于页面的设计一直都不是很懂.看到easyui样式简洁大方的样子,就心里痒痒,趁这段时间工作没什么项目的同时充充电.同时给自己做个笔记吧. 首先需要下载easyui的包,有两种版本,支持GP ...

  2. Android 屏幕尺寸知识

    转自:http://www.zcool.com.cn/article/ZNjI3NDQ=.html 1.了解几个概念 (1)分辨率.分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏 ...

  3. Cobbler自动化部署

    一:PXE.Kickstart与Cobbler的概念: PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的技术,需要网卡的硬件支持,工作于C/S的 ...

  4. hdu 2841 Visible Trees

    /** 大意: 求[1,m], [1,n] 之间有多少个数互素...做了 1695 ,,这题就so easy 了 **/ #include <iostream> #include < ...

  5. asp.net插入sql server 中文乱码问题解决方案

    创建数据库的代码---创建promary表 create table promary ( proID int primary key, proName varchar(50) not null ) 出 ...

  6. gdb图形化调试工具总结

    gdb除了命令行方式等的调试之外,还有图形化的调试工具,下面列举一些供参考 1:insight 2: ddd 3: kgdb 4: xxgdb 其它的工具欢迎补充

  7. 程序中使用事务来管理sql语句的执行,执行失败时,可以达到回滚的要求。

    1.设置使用事务的SQL执行语句 /// <summary> /// 使用有事务的SQL语句 /// </summary> /// <param name="s ...

  8. 【Maven】项目添加Maven类库依赖

    1.右击项目-->Maven-->EnableDependencyManagement,按步骤完成操作. 2.右击项目-->Properties-->DeploymentAss ...

  9. BZOJ 1060: [ZJOI2007]时态同步( 树形dp )

    坑爹...数据是错的..详见discuss  http://www.lydsy.com/JudgeOnline/wttl/wttl.php?pid=1060 先求根到叶子的距离最大值x, 然后把所有叶 ...

  10. Android ListView两种长按弹出菜单方式

    转自:http://www.cnblogs.com/yejiurui/p/3247527.html package com.wyl.download_demo; import java.util.Ar ...