/*

编译:

dir:dir.c

gcc -o $@ $<

*/

#include

#include

#include

#include

#include

int do_search_dir(char *path);

int do_check_dir(char *fullpath, char* truefullpath);

void usage(char *apps);

int count = 0;

int

main(int argc,char **argv)

{

char fullpath[1024]={0};

if(argc != 2)

{

usage(argv[0]);

return -1;

}

if( -1 ==do_check_dir(argv[1], fullpath) )

return -1;

do_search_dir(fullpath);

printf("\nThe total number of files is %d in the directory [%s].\n\n", count , fullpath);

return 0;

}

//return -1 search fail

//return 0 search ok

int

do_search_dir(char *path)

{

DIR *dir;

struct dirent *s_dir;

struct stat file_stat;

char currfile[1024]={0};

int len = strlen(path);

if(path[len-1] != '/')

{

path[len] = '/';

path[len+1] = 0;

}

printf("%s\n",path);

if( (dir=opendir(path)) == NULL)

{

printf("opendir(path) error.\n");

return -1;

}

while((s_dir=readdir(dir))!=NULL)

{

if((strcmp(s_dir->d_name,".")==0)||(strcmp(s_dir->d_name,"..")==0))

continue;

sprintf(currfile,"%s%s",path,s_dir->d_name);

stat(currfile,&file_stat);

if(S_ISDIR(file_stat.st_mode))

do_search_dir(currfile);

else

printf("%-32s\tOK\n",currfile);

count++;

//

//添加针对此文件的操作

//

}

closedir(dir);

return 0;

}

void

usage(char * apps)

{

printf("Directory to search for files.\n\n");

printf("Usage: %s dirpath\n\n",apps);

}

//return -1 directory error

//args:

//input     -->fullpath

//output     -->truefullpath

int

do_check_dir(char *fullpath, char* truefullpath)

{

DIR *dir;

int pathlen, i ,k;

if( (dir=opendir(fullpath)) == NULL)

{

printf("opendir fullpath error.\nMaybe dir error.\n");

return -1;

}

closedir(dir);

pathlen = strlen(fullpath);

if( pathlen-1 != 0)        // 路径长度不为1 的目录

{

if( fullpath[pathlen-1] == '/' )    // 最后字节是'/'

{

for(i=pathlen-1; i>=0 ; i--)

{

if( fullpath[i-1] != '/' && fullpath[i] == '/')

break;

}

fullpath[i+1] = 0;

}

else        // 最后字节不是'/'

{

fullpath[pathlen] = '/';

fullpath[pathlen+1] = 0;

}

}

else     // 路径长度为1 的目录

{

if(fullpath[pathlen-1] != '/')

{

fullpath[pathlen] = '/';

fullpath[pathlen+1] = 0;

}

else

fullpath[pathlen] = 0;

}

strcpy(truefullpath,fullpath);

return 0;

}

linux 怎么禁止遍历目录,linux下遍历目录功能实现相关推荐

  1. windows linux复制文件夹命令,ubuntu下复制目录和文件的指令以及和windows下的copy方式...

    Ubuntu中复制文件或目录的命令 cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制 ...

  2. jQuery过滤、遍历同级元素、向上遍历、向下遍历

    话不多说,直接贴代码(我只是希望能在温习原生js的同时,发现一些有趣的东西!) .html: <!DOCTYPE html> <html> <head> <m ...

  3. linux vnc 禁止复制,Linux_Linux系统下VNC SERVER的相关配置,安装: 复制代码代码如下: - phpStudy...

    Linux系统下VNC SERVER的相关配置 安装: 复制代码代码如下: yum install tigervnc-server 配置: (1) 复制配置文件: 复制代码代码如下: ~]# cp / ...

  4. linux怎样禁止他人远程,linux禁止用户远程登录的方法

    linux禁止用户远程登录的方法: 1.在新添加一个新用户的时候就指定这个用户不能远程登录 useradd  -s /sbin/nologin zgsj        //这里就是创建了一个不能远程登 ...

  5. linux如何禁止pci设备,Linux 内核PCI去除一个设备

    一个 PCI 可用多个不同的方法被从系统中去除. 所有的 card-bus 设备在一个不同的物 理因素上是真正的 PCI 设备, 并且内核 PCI 核心不区分它们. 允许在机器运行时加减 PCI 设备 ...

  6. linux c 禁止对外通信,Linux c 屏蔽信号、切换信号

    信号导致的问题 不是任何信号我们都需要的,如果遇到我们不想处理的信号,我们怎么避免这个信号? 1.      信号屏蔽 intsigprocmask(int how,//操作方式 SIG_BLOCK屏 ...

  7. linux系统禁止邮箱服务,Linux禁止smtp发送邮件,禁止25端口,防止垃圾邮件

    有时候,一些网站不小心被黑,导致垃圾邮件泛滥而遭到投诉,这是我们不想遇到的.怎么样在Linux禁止smtp发送邮件,禁止25端口,防止垃圾邮件?我们可以用iptables来实现屏蔽25端口,如果服务器 ...

  8. linux c 禁止对外通信,Linux C套接字:在recv调用时被阻止

    在我的应用程序中,我为简单的http服务器创建了一个线程,然后从我的应用程序中尝试连接到http服务器,但是在recv调用中控件被阻止/挂起. 但是,如果尝试使用linux GET命令连接到应用程序的 ...

  9. python目录遍历_python文件操作之目录遍历实例分析

    本文实例讲述了python文件操作之目录遍历的方法.分享给大家供大家参考.具体分析如下: Python的os模块,包含了普遍的操作系统功能,这里主要学习与路径相关的函数: os.listdir(dir ...

  10. linux 设置禁止ping,linux设置禁止ping

    linux禁止ping 为了服务器的安全, 防止网络攻击(DOS 攻击消耗网络宽带,CPU资源), 需要服务器设置 禁止ping 通常有两种方式 第一种是通过防火墙 iptables 设置 第二种是内 ...

最新文章

  1. 63、使用Timer类来实现定时任务
  2. cocos2d-x游戏实例(8)-A星算法(4)
  3. Java Optional 的 orElse() 和 orElseGet() 的区别
  4. Java-分析类初始化
  5. python参数检验框架_基于python的人员识别检测框架研究
  6. python中对字符串进行编码_Python 中的字符串编码
  7. Web流程图绘制使用raphael
  8. Poj 1338 Ugly Numbers(数学推导)
  9. 设计灵感|如何让你的海报更具现代感?
  10. python爬虫入门四:BeautifulSoup库(转)
  11. Linux/windows com串口 java 接收数据 并解析 web程序
  12. MATLAB信号处理仿真入门实验
  13. 【解决方案】AI视频结构化智能安防平台EasyCVR保护小区居民安全智能监控方案
  14. 华为OD机试2023年最新题库(JAVA、Python、C++)
  15. SpringCloud 微服务开放平台接口
  16. 服务器托管如何选择合适的idc服务器托管商
  17. 优质软件、网站等推荐(持续更新)
  18. 货代英语--------澳大利亚包装声明
  19. c语言强制转换是四舍五入,c语言强制转换四舍五入.docx
  20. TM2013 Preview1 优化笔记

热门文章

  1. struts2的漏洞
  2. Tiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMSTiray.SMS
  3. 聊聊flink Table的OrderBy及Limit
  4. WIN10下ADB工具包安装的教程和总结 --201809
  5. **加密解密基础、PKI及SSL、创建私有CA**
  6. 如何让CloudStack使用KVM创建Windows实例成功识别并挂载数据盘
  7. 智能家居物联网化将成为AWE大会最大看点
  8. 坚持学习WF(8):本地服务之调用外部方法
  9. cmake使用总结(转)---工程主目录CMakeList文件编写
  10. sql server 2005 (select查询语句用法)