前言:
而今咱们对“linux全局搜索目录”大概比较关怀,我们都想要学习一些“linux全局搜索目录”的相关知识。那么小编同时在网上汇集了一些有关“linux全局搜索目录””的相关资讯,希望兄弟们能喜欢,我们一起来了解一下吧!总体概述
在linux系统环境下,实现对指定的目录下所有文件的遍历。需要用到的函数有opendir, readdir, closedir三个函数。
函数原型
opendir函数原型:DIR *opendir(const char *name);
readdir函数原型:struct dirent *readdir(DIR *dirp);
closedir函数原型:int closedir(DIR *dirp);
函数作用
opendir函数的作用:打开一个给定的目录文件,并返回目录流指针。
readdir函数的作用:读取一个指向dirent的结构体指针。
closedir函数的作用:关闭一个已经打开的目录流指针,与opendir成对出现。
参数介绍
opendir参数介绍:
输入参数:name => 传入目录的路径名。返回值:DIR * => 成功:返回目录流指针;失败:返回 NULL。
readdir参数介绍:
输入参数:dirp => 打开的目录流指针,readdir成功之后就会指向下一个目录的指针。返回值:struct dirent * => 成功:返回目录结构体指针;失败或者到达目录流的末尾:返回 NULL。
closedir参数介绍:
输入参数:dirp => 打开的目录流指针返回值:成功:返回 0;失败: 返回 -1。
补充:struct dirent 结构体的原型struct dirent { ino_t d_ino; /* inode number */ off_t d_off; /* not an offset; see NOTES */ unsigned short d_reclen; /* length of this record */ unsigned char d_type; /* type of file; not supported by all filesystem types */ char d_name[256]; /* filename */};代码示例
#include <stdio.h>#include <sys/types.h>#include <dirent.h>#include <string.h>int main(int argc, char **argv){ if (argc != 2) { printf("usage: %s <pathname>\r\n", argv[0]); return -1; } DIR *dirp = opendir(argv[1]); if (!dirp) { printf("open dir %s failed.\r\n", argv[1]); return -1; } struct dirent *dirent; while ((dirent = readdir(dirp))) { if (!strcmp(dirent->d_name, ".") || !strcmp(dirent->d_name, "..")) continue; printf("%s\t", dirent->d_name); } printf("\n"); return closedir(dirp);}使用方法
$ mkdir ~/clanguage && cd ~/clanguage$ touch directory.c 注:创建并拷贝代码到directory.c,保存退出。$ gcc -o directory directory.c$ ./directory ./ 注:显示当前目录下的文件
注:由于作者能力有限,文中表述难免有错误。如果发现文中错误之处,敬请广大好友批评指正。
标签: #linux全局搜索目录