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. C#线程应用实例(part1) 之 BeginInvoke和EndInvoke

    最近这个公司是做 winfrom 开发的 , 这段时间就好好的学学WCF , 公司框架什么的自己去琢磨! 这里主要写一些 winfrom 中 用到的一些陌生 技术 1.BeginInvoke  以前B ...

  2. TCP/IP学习笔记

    1. 2. >>>   int socket(int af, int type,int protocol);//创建套接字,返回从文件描述表中取出新的索引号(int);AF_INET ...

  3. asp.net 页面执行过程

    Application_BeginRequest Application_AuthenticateRequest Application_AuthorizeRequest Application_Re ...

  4. Web Api Route 注册要放在 Mvc Route 注册前

    今天想研究一下Web Api,写了一个测试Api,打开网站后浏览一下,可是却提示找不到方法,刚开始以为哪里配置错了,可找了半天也没见. 因为我是在一个现有Mvc站点做的Demo,所以打算新建一个Mvc ...

  5. 查找最小的k个元素

    题目:输入n个整数,输出其中最小的k个. 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4. 两种思路,无非就是时间与空间的妥协. 限制空间的时候要对原数组进行排序, ...

  6. 转: seajs手册与文档之 -- require规则

    require 规则 正确拼写 不要修改 使用直接量 动态依赖的小提示 书写规则 使用 SeaJS 书写模块代码时,需要遵循一些简单规则: 1. 正确拼写 在模块代码中,第一个参数 必须 命名为 re ...

  7. 转:sublime text快捷键 (很实用的东东)

    一个好的编辑器,能大大提高编程的效率.如果能熟知软件的快捷键,那更能让你得心印手.这些内容都是我网上和自己实际使用过程中所收集而来的,在网络上应该也算比较全面的了吧.欢迎大家补充,我也会在以后慢慢添加 ...

  8. <jsp:include page="">和<%@include page=""%> 标签学习

    <jsp:include page=""><jsp:param value=""name=""/><DEL&g ...

  9. Swift - 2 (?和!、结构体、类、协议、扩展、闭包)

    1> 可选类型(?)和强制解包(!) 在swift中,可选类型(?) 其根源是一个 枚举型,里面有 None 和 Some 两种类型.其实所谓的 nil 就是 Optional.None , 非 ...

  10. linux命令--sysctl

    sysctl sysctl被用来在执行时配置内核参数.这些参数都存储在/proc/sys/(以键-值对形式存储)中.你可以用sysctl来读和写数据 命令参数 variable   要读的键值的名字 ...