`
灵动的水
  • 浏览: 194559 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

在linux下遍历某一目录下内容

阅读更多
在linux下遍历某一目录下内容LINUX下历遍目录的方法一般是这样的
打开目录->读取->关闭目录
相关函数是opendir -> readdir -> closedir,其原型如下:
#include <dirent.h>
DIR *opendir(const char *dirname);
struct dirent *readdir(DIR *dirp);
int closedir(DIR *dirp);

简单列举一例:

#include<dirent.h>    

  

        struct dirent* ent = NULL;
        DIR *pDir;
       
        if( (pDir=opendir("/home/test")) == NULL)
        {
                printf("open dir %s failed\n", pszBaseDir);
                return false;
        }

        while( (ent=readdir(pDir)) != NULL )
        {
              printf("the ent->d_reclen is%d the ent->d_type is%d the ent->d_name is%s\n", ent->d_reclen, ent->d_type, ent->d_name); 

         }


        closedir(pDir);




其中有一很关键的结构体dirent:

代码
On Linux, the dirent structure is defined as follows: struct dirent {    ino_t          d_ino;       /* inode number */    off_t          d_off;       /* offset to the next dirent */    unsigned short d_reclen;    /* length of this record */    unsigned char  d_type;      /* type of file */    char           d_name[256]; /* filename */};其中inode表示存放的是该文件的结点数目(具体可了解linux下的文件系统),d_off 是文件在目录中的编移,这两个基本很少用。

d_type表示档案类型:

view sourceprint?01 enum

02 { 

03     DT_UNKNOWN = 0, 

04 # define DT_UNKNOWN DT_UNKNOWN 

05     DT_FIFO = 1, 

06 # define DT_FIFO DT_FIFO 

07     DT_CHR = 2, 

08 # define DT_CHR DT_CHR 

09     DT_DIR = 4, 

10 # define DT_DIR DT_DIR 

11     DT_BLK = 6, 

12 # define DT_BLK DT_BLK 

13     DT_REG = 8, 

14 # define DT_REG DT_REG 

15     DT_LNK = 10, 

16 # define DT_LNK DT_LNK 

17     DT_SOCK = 12, 

18 # define DT_SOCK DT_SOCK 

19     DT_WHT = 14 

20 # define DT_WHT DT_WHT 

21 };

d_reclen认为是纪录的长度,计算方式应该是4(d_ino)+4(d_off)+2(d_reclen)+1(d_type)+1(补齐位)+4N(d_name会自动补齐:1.jpg为8,12.jpg也为8,1234.jpg也为8,12345.jpg则为12);所以一般d_reclen是20和24(其中.和..是16)。

d_name表示文件名,如test.jpg

分享到:
评论

相关推荐

    C++遍历某文件夹某类扩展名的文件.docx

    这个例子中,我们看到一个简单的C++程序,它遍历指定目录下所有扩展名为".jpg"的文件。以下是对该程序的详细解释和相关知识点的扩展: 1. **文件系统操作**:C++标准库并不直接支持文件系统的操作,但可以通过一些...

    C++遍历某文件夹某类扩展名的文件.pdf

    然后,使用`_findnext`函数在目录中查找下一个匹配的文件,直到没有更多的文件为止。在每次循环中,我们都打印出找到的文件名。 ```cpp printf("%s\n", fileinfo.name); while (!_findnext(handle, &fileinfo)) { ...

    Linux下rar及zip压缩包中批量替换某文件脚本

    在Linux环境下,对rar和zip压缩包进行批量替换文件的操作是一项常见的系统管理任务。这通常涉及到脚本编程,以便自动化处理大量的压缩文件。标题提到的`zip_replace.sh`和`rar_replace.sh`就是两个用于执行这个任务...

    获取指定目录下的所有文件路径及文件名

    "获取指定目录下的所有文件路径及文件名"这一主题是其中的核心部分,它涉及到文件系统接口的使用,以及如何遍历目录结构来收集信息。在这个场景下,我们将深入探讨以下几个关键知识点: 1. **文件路径与文件名**: ...

    Shell脚本遍历一个日期范围实例

    在IT领域,Shell脚本是一种常用的自动化工具,尤其在Linux或Unix系统中,它能帮助我们执行一系列命令,包括处理文件、系统管理以及各种复杂的任务。在这个实例中,我们将探讨如何使用Shell脚本来遍历一个特定的日期...

    linux Shell获取某目录下所有文件夹的名称

    ### Linux Shell 获取某目录下所有文件夹的名称 在Linux环境下,经常需要处理各种文件及文件夹的操作。本文将详细介绍如何使用Linux Shell脚本来获取指定目录下的所有子目录(文件夹)名称,并对其进行一些基本的...

    linux下将qq聊天记录分开存储及倒序

    如果只需要倒序某一部分(比如按时间戳),可能需要使用`sort`命令,结合时间戳字段进行排序。 4. **自动化处理**: 将以上步骤整合到一个shell脚本中,可以方便地批量处理多个QQ号码的聊天记录。可以创建一个`for...

    [课件] linux入门基础ppt

    5. 循环结构:for和while循环用于反复执行某段代码,例如遍历目录下的所有文件。 6. 函数:可以定义函数来封装常用操作,提高代码复用性。 7. 输入输出重定向:`&gt;`和`用于重定向输入和输出,例如将命令的输出保存到...

    linux 常用脚本命令集

    #### 二、查找日期为某一天的文件 **标题与描述解析:** 在Linux系统中,有时需要查找特定日期创建或修改的文件。这部分提供了一种方法来查找指定日期的文件。 **详细解释:** 脚本首先定义了一个变量`OK`用于...

    LINUX文件去重工具C预言实现

    指定某一个目录,对该目录下所有文件进行遍历(非子目录),列举出内容相同的文件,有用户决定取舍

    实验三 Linux下的程序设计.docx

    Vi编辑器是Linux系统中常用的文本编辑工具,它有命令模式和插入模式两种操作状态,学习者需要掌握如何启动、退出编辑器,以及在命令模式下进行文本的复制、粘贴和删除等基本操作。 在实验中,学生需要编写一个Shell...

    太原理工软件工程Linux与Python编程

    #### 一、Linux系统安装与使用基础 1. **实验目的与要求** - 掌握Linux操作系统的安装方法。 - 熟悉Linux的基本命令行操作。 - 了解Linux环境下的文件系统结构。 2. **实验内容及步骤** - **Linux系统的安装**...

    linux系统QT聊天程序

    Linux系统中的QT聊天程序是一种基于C++编程语言和Qt库构建的应用程序,它允许用户在本地网络或互联网上实现...通过这个项目,开发者不仅可以提升C++和Qt的编程技能,还能了解如何在Linux环境下构建一个实用的网络应用。

    大学《Linux原理与应用》期末试卷及答案(二).docx

    5. 在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用“.”命令(C选项)。vi编辑器中的“.”命令可以重复上一次的操作。 6. 某文件的组外成员的权限为只读;所有者有全部权限;组内的权限为读...

    Linux内核list&hlist;解读

    相比于 `list_for_each`,`list_for_each_safe` 多了一个额外的指针 `n` 来保存下一个节点,以防止在删除当前节点时丢失对下一个节点的引用。 **3.7.4. 示例** 遍历一个链表并删除某些节点: ```c struct list_head...

    R-tree source code in Linux

    此外,R树还能帮助实现复杂的查询,比如查找距离某一位置最近的几何对象。 R树的实现通常包括插入、删除、查询等基本操作。在Linux环境下,"Rtree.ok"可能是一个实现了R树核心功能的源代码文件,包含了这些操作的...

    读取N个文件夹某些文件合并到一个文件夹

    当遍历到一个目录时,递归调用自身,传入该目录的路径,继续遍历其子目录。 7. **多线程优化**:如果文件数量巨大,可以考虑使用多线程来并行处理文件移动,提高效率。C++11引入了`std::thread`库,可以创建新的...

    Linux设备驱动程序学习(13)-Linux设备模型(总线、设备、驱动程序和类) - Linux设备驱动程序

    在Linux系统中,设备驱动程序是操作系统与硬件设备之间的桥梁,它们负责管理和操作硬件设备,使得上层的应用程序能够高效地使用硬件资源。本篇将深入探讨Linux设备模型,包括总线、设备、驱动程序和类的概念,以及...

Global site tag (gtag.js) - Google Analytics