编程实现LINUX下目录的层层遍历
/*************************************************************************
> File Name: treedir.c
> Author: KrisChou
> Mail:zhoujx0219@163.com
> Created Time: Tue 19 Aug 2014 05:04:50 PM CST
************************************************************************/ #include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h> void print_tree(char* dirname, int spc_cnt); int main(int argc, char* argv[])// ./main dir
{
if(argc == 1)
{
print_tree(".", 0);
}else if(argc == 2)
{
print_tree(argv[1], 0);
}
return 0 ;
} void print_tree(char* dirname, int spc_cnt)
{
DIR* pdir ; //目录指针
struct dirent* pent ; //可以获取目录下子项d_name的结构体指针
struct stat my_stat ; //根据绝对路径,获取文件信息的结构体 char old_path[128]=""; //保存原来的工作路径
getcwd(old_path, 128); pdir = opendir(dirname); //打开目录
if(pdir == NULL)
{
perror("opendir");
exit(1);
} chdir(dirname); //切换到需要遍历的目录 while((pent = readdir(pdir)) != NULL)
{
if(strncmp(pent ->d_name, ".", 1) == 0 || strncmp(pent->d_name,"..", 2) == 0)
{
continue ;
} memset(&my_stat, 0 , sizeof(my_stat));
if(stat(pent ->d_name, &my_stat) == -1)
{
perror("stat");
exit(1);
} if(S_ISDIR(my_stat.st_mode))
{
printf("%*s%s\n",spc_cnt," ",pent ->d_name);
print_tree(pent ->d_name, spc_cnt + 5);
}else
{
printf("%*s%s\n",spc_cnt," ",pent ->d_name);
}
} closedir(pdir);
chdir(old_path); //程序结束切换回原来的目录
}
编程实现LINUX下目录的层层遍历的更多相关文章
- Linux下的tree命令 --Linux下目录树查看
Linux下的tree命令 --Linux下目录树查看 有时我们需要生成目录树结构,可以使用的有ls -R,但是实际效果并不好 这时需要用到tree命令,但是大部分Linux系统是默认不安装该命令的, ...
- windows和linux下目录分隔符兼容问题(换行回车兼容)
windows和linux下目录分隔符兼容 DIRECTORY_SEPARATOR 换行回车兼容 PHP_EOF
- linux下实现ls()函数遍历目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...
- [C++]linux下实现ls()函数遍历目录
转载请注明原创:http://www.cnblogs.com/StartoverX/p/4600794.html 需求:在linux下遍历目录,输出目录中各文件名. 在linux下遍历目录的相关函数有 ...
- liunx学习(一):linux下目录操作大全
Linux C函数之文件及目录函数(全):http://blog.sina.com.cn/s/blog_695e489c01013ldd.html linux目录操作发:http://www.cnbl ...
- 【转】 Linux下目录结构
装完Linux,首先需要弄清Linux 标准目录结构 / root — 启动Linux时使用的一些核心文件.如操作系统内核.引导程序Grub等. home — 存储普通用户的个人文件 ftp — 用户 ...
- linux下目录简介——/sys
Linux下/sys目录介绍 1. 概述 ramdisk 文件系统基于磁盘模拟技术,实际文件系统是ex2 ex3等.sysfs是一种基于ram文件系统和proc一样.Sysfs文件系统是一个类似 ...
- 用.Net如何访问Linux下目录
很多Windows下的应用需要访问和监控Linux下的目录,本文便介绍如何实现. 只需要搭建配置samba服务,即可将Linux下的目录变得如同Windows下共享可写. 1.服务查询 默认情况下,L ...
- Linux下 目录 压缩 解压缩 打包
http://blog.sina.com.cn/s/blog_7479f7990100zwkp.html tar -zcvf /home/xahot.tar.gz /xahot tar -zcv ...
随机推荐
- VS2012 常用web.config配置解析之自定义配置节点
在web.config文件中拥有一个用户自定义配置节点configSections,这个节点可以方便用户在web.config中随意的添加配置节点,让程序更加灵活(主要用于第三方插件的配置使用) 自定 ...
- 【AFNetworking】AFNetworking源码阅读(一)
1. 前言 2. iOS Example代码结构 3.AFNetworkActivityIndicatorManager 4. UIRefreshControl+AFNetworking 5. AFN ...
- 【每日scrum】NO.3
1.感觉需求分析没有想象的那么简单,今天由于某些原因没有完成.
- 关于js with语句的一些理解
关于js with语句的一些理解 今天看到js的with语句部分,书中写到,with语句接收的对象会添加到作用域链的前端并在代码执行完之后移除.看到这里,我有两点疑问,添加到作用域链前端是不是指对 ...
- C# 或 JQuery导出Excel
首先要添加NPOI.dll文件 然后添加类:NPOIHelper.cs using System; using System.Data; using System.Configuration; usi ...
- Careercup - Google面试题 - 5765091433644032
2014-05-08 09:32 题目链接 原题: Given a binary tree, how would you copy it from one machine to the other, ...
- Linux 下开放指定端口
安装tomcat后,在客户端输入地址 http://localhost:8080/ ,发现默认端口8080不能访问. 由于Linux防火墙默认是关闭8080端口.因此,若要能够访问8080端口,可以 ...
- ZeroMQ 在 centos 6.5_x86_64 下的安装
ZeroMQ 在 centos 6.5_x86_64 下的安装 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.ZeroMQ介绍 ZeroMQ是一个开 ...
- hibernate---table_Generator
首先讲一下调试技巧:: @javax.persistence.TableGenerator( name="Teacher_GEN", table="GENERATOR_T ...
- BZOJ3130 [Sdoi2013]费用流
AC通道:http://www.lydsy.com/JudgeOnline/problem.php?id=3130 这题codevs上也有,不过数据挂了[要A得看discuss]. 题目大意: Ali ...