目录操作

1.查找当前目录下,所有文件,文件内容有string,打印出文件名

/*打印当前目录的文件名*/

/*
./a.out string
查找当前目录下,所有文件,文件内容有string,打印出文件名
*/#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <dirent.h>#define N 1024int main(int argc, char **argv)
{DIR *dp;struct dirent *item;FILE *fp;char buf[1024];if(argc != 2){printf("Use:./a.out string\n");}dp = opendir(".");if(dp == NULL){perror("open dir file\n");}while( (item = readdir(dp)) ){
//      if( strstr(item->d_name, argv[1]) != NULL){
//          printf("%s\n", item->d_name);fp = fopen(item->d_name, "r");while( fgets(buf, N, fp) != NULL){ //fgets读取包括\n   (abchello\n\0)if( strstr(buf, argv[1]) != NULL){buf[strlen(buf) - 1] = '\0';      printf("%s\n%s\n", item->d_name, buf);}                }}closedir(dp);return 0;
}/*
akaedu@akaedu:~/ms/read_open_dir$ ./dir stdio.h
read_to_file_open.c
#include <stdio.h>
dir.c
#include <stdio.h>
read_to_file.c
#include <stdio.h>
akaedu@akaedu:~/ms/read_open_dir$
*/

2.递归打印目录

----------------------------------------------------------------------------------------
struct dirent
{long d_ino;                    /* inode number 索引节点号 */off_t d_off;                /* offset to this dirent 在目录文件中的偏移 */unsigned short d_reclen;    /* length of this d_name 文件名长 */unsigned char d_type;      /* the type of d_name 文件类型 */char d_name [NAME_MAX+1];   /* file name (null-terminated) 文件名,最长256字符 */
}struct dirent中的几个成员:d_type:4表示为目录,8表示为文件d_reclen:16表示子目录或文件,24表示非子目录经过本人亲自试验发现:d_reclen:16表示子目录或以.开头的隐藏文件,24表示普通文本文件,28为二进制文件,等等d_name:目录或文件的名称----------------------------------------------------------------------------------------/*功能:演示了在Linux下利用C语言递归遍历指定目录下的子目录(不含隐藏目录)和文件
*/
#include <stdio.h>
#include <dirent.h>   //for opendir(),readdir(),closedir()
#include <string.h>void print_dir(char * dir_path)
{DIR *pdir; //打开目录的句柄,类似于 FILE *fpstruct dirent *dp = NULL;if( ( pdir = opendir(dir_path) )  != NULL )  //打开路径(目录),返回一目录句柄{while(  (dp = readdir(pdir))  != NULL )  //读目录信息,返回值为一个struct dirent的结构体{if( dp->d_type == 8 )                // d_type:8-文件,4-目录{printf("File:\t%s\n", dp->d_name); //打印文件名称 }else if( (dp->d_type == 4) && (dp->d_name[0] != '.') )        //是目录的情况下,打印出除 '.'目录 '.' 表示当前目录自身,外的目录{printf("\n[Dir]: %s\n", dp->name);print_dir(dp->name);              //递归遍历子目录printf("返回[%s]\n", dp->name);}}closedir(pdir);}else{printf("Open Dir-[%s] failed.\n", dir_path);}}int main(int argc, char *argv[])
{/*   if( argc != 2 ){printf("Use:./a.out path\n");}*/ char char path[] = "/home/zcm/program/test";print_dir(path);return 0;
}

目录操作 递归打印目录 DIR drent相关推荐

  1. java当中递归打印目录树

    一:上码 package cn.wyj.one;import java.io.File;public class Demo8_递归打印目录树 {public static void main(Stri ...

  2. python递归打印目录树

    '''尚学堂学习笔记,复习用''' 递归打印目录树 import osall_files = []#传入文件路径和层级 def get_all_files(path, level):#引用该路径下的子 ...

  3. python目录操作函数_Python3目录操作

    Python3 目录操作 常见的目录操作: 显示当前目录 切换目录 新建.删除目录.移动.复制 显示目录内容 判断目录.文件是否存在 目录操作常用的函数如下: os.listdir() # 列出目录下 ...

  4. 时间:2014年3月27日文件和目录操作函数

    主要内容: 目录操作:打开.读取.关闭.创建.重命名.删除 文件操作:打开.读.写.关闭.重命名.删除 信息获取函数 filemtime() filesize() file_exists()  is_ ...

  5. 三十四 操作文件和目录

    如果我们要操作文件.目录,可以在命令行下面输入操作系统提供的各种命令来完成.比如dir.cp等命令. 如果要在Python程序中执行这些目录和文件的操作怎么办?其实操作系统提供的命令只是简单地调用了操 ...

  6. 大数据学习笔记1.3 Linux目录操作

    Linux目录操作 一.常用权限操作 (一).常用权限操作 (1)chgrp命令 (2)chown命令 (3)chmod命令 (二).权限操作 1.创建文件,设置其用户组 2.修改文件的所有者 3.修 ...

  7. PHP怎样在index建一个txt文件,PHP教程第七十五讲——PHP文件系统与文本数据操作:PHP目录操作详解...

    在PHP中,常见的PHP目录操作包括打开目录.关闭目录.读取目录中的文件.创建目录及删除目录等. 1.打开目录: 在PHP中使用opendir函数打开目录.该函数返回一个资源对象,用于储存当前的目录资 ...

  8. poi 5.2.2 操作word【目录】

    poi 3.17操作Word工具包,点击此处 当前版本 5.2.2 ,版本不同,写法略有差异 - poi-5.2.2 操作word [段落] - poi-5.2.2 操作word [表格] - poi ...

  9. 文本操作的相关概念和方法+pickle序列化+csv文件操作+操作系统命令(os和os.path)+shutil模块+zipfile模块+递归算法打印目录树

    目录 一.文件操作 1.文本文件和二进制文件 2.文件操作相关模块概述 3.文件文本的写入 4.中文乱码问题的解决 5.close()关闭文件流--try异常管理 6.关闭流要点:_with上下文管理 ...

  10. 利用VB函数Dir()实现递归搜索目录

     它没有采用任何的控件形式,也没有调用系统API函数FindFirst,FindNext进行递归调用,和别人有点不同的就是我用的是VB中的Dir()函数.事实上,直接采用Dir()函数是不能进行自身的 ...

最新文章

  1. 名校算法博士找工作两月无果,因本科是不知名学校被婉拒
  2. string.Format 格式化
  3. 浪潮云完成6亿元B轮融资,正推进上市;VMware收购AI初创公司Bitfusion;小爱同学App在苹果应用商店下架……...
  4. 从底层分析c和类c语言
  5. MVC SignalR Hub实时聊天实时Web解决方案
  6. 清华,就要成为地表最强研究机构了
  7. int输出%f浮点值是0,double/float 浮点数%d输出0的原因
  8. 亚马逊多账号操作如何判断关联
  9. 史丰收速算 (蓝桥杯)
  10. c语言标准库详解(九):实用函数stdlib.h
  11. 二进制数的反码和补码
  12. gmx solvate命令
  13. Get “https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage-12.0.
  14. 棋盘(Checkerboard)算法
  15. 2012年终总结之pcode概述
  16. dos下用move命令移动文件夹
  17. RenderScript 让你的Android计算速度快的飞上天!
  18. python使用代理爬虫_python爬虫requests使用代理ip
  19. STM32F407-外部中断
  20. 同一网段的概念以及计算

热门文章

  1. 微信个人号API开发
  2. 《矛盾论》与《实践论》
  3. Node第四天学习总结—— 数据库与身份认证(数据库、安装并配置MySQL、MySQL的基本使用、在项目中操作MySQL、前后端的身份认证)
  4. web端接入QQ第三方登陆获取本地QQ登陆信息流程
  5. 艾肯6nano声卡安装调试教程
  6. 服务器pe安装win7系统安装教程,win7pe装系统步骤详解
  7. 关于传奇自动触发的几个常用脚本OnKillMob、StdModeFunc、等触发事件
  8. Scala 与设计模式(四):Factory 工厂模式
  9. 初学者入门编程最开始要学什么?
  10. 区分英文句号和数字中的正则表达式