LINUX下用C遍历一个目录的代码

简介: LINUX下用C遍历一个目录的代码

代码如下:

#include <dirent.h>
#define VALID_FILE_HEAD  "converted-"
#define VALID_FILE_TAIL  ".h264"
#define MAX_BUFFER_SIZE  1024
/*
enum
  {
    DT_UNKNOWN = 0,
# define DT_UNKNOWN     DT_UNKNOWN
    DT_FIFO = 1,
# define DT_FIFO        DT_FIFO
    DT_CHR  = 2,
# define DT_CHR         DT_CHR
    DT_DIR  = 4,
# define DT_DIR         DT_DIR
    DT_BLK  = 6,
# define DT_BLK         DT_BLK
    DT_REG  = 8,
# define DT_REG         DT_REG
    DT_LNK  = 10,
# define DT_LNK         DT_LNK
    DT_SOCK = 12,
# define DT_SOCK        DT_SOCK
    DT_WHT  = 14
  };
*/
int process_directory(const int view, const char* pPath)
{
    DIR           *pDir;
    struct dirent *pFile;
    int   validCount = 0;
    if ((pDir=opendir(pPath)) == NULL)
    {
        perror("Open dir error...");
        exit(1);
    }
    while ((pFile=readdir(pDir)) != NULL)
    {
        if (strcmp(pFile->d_name, ".") == 0 || strcmp(pFile->d_name, "..") == 0)
        {
             ///current dir OR parrent dir
             continue;
        }
        else if (pFile->d_type == DT_REG)
        {
             ///file
             char fullPath[MAX_BUFFER_SIZE];
             sprintf(fullPath, "%s/%s", pPath, pFile->d_name);
             //GH_LOG_TEXT(fullPath);
             //限定文件头、文件尾
             if (  strstr(pFile->d_name, VALID_FILE_HEAD) != NULL
                && strstr(pFile->d_name, VALID_FILE_TAIL) != NULL)
             {
                 gh_ai_channel_process_ghinfer (view, (const char*)fullPath, validCount);
                 validCount ++;
             }
        }
        else if (pFile->d_type == DT_LNK)
        {
             ///link file
             printf("d_name:%s/%s\n", pPath, pFile->d_name);
        }
        else if (pFile->d_type == DT_DIR)
        {
             ///dir
             char subDir[MAX_BUFFER_SIZE];
             memset(subDir, 0, MAX_BUFFER_SIZE);
             sprintf(subDir, "%s/%s", pPath, pFile->d_name);
             //process_directory(view, subDir);
        }
    }
    closedir(pDir);
}
             sprintf(subDir, "%s/%s", pPath, pFile->d_name);
             //process_directory(view, subDir);
        }
    }
    closedir(pDir);
}
目录
相关文章
|
4天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
19 3
|
8天前
|
存储 Linux Windows
linux常用目录
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序。 /home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一版该目录名是以用户的账号命名的。 /root 该目录为系统管理员,也称为超级权限者的用户主目录。 /lib 系统开机所需要最基本的动态连接共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 /etc 所有的系统管理所需要的配置文件和子目录。 /usr 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program fies目录。 /bo
23 2
|
8天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
18 4
|
13天前
|
网络协议 Linux
linux系统重要文件目录
本文介绍了Linux系统中的重要目录及其历史背景,包括根目录、/usr、/etc、/var/log和/proc等目录的结构和功能。其中,/etc目录下包含了许多关键配置文件,如网卡配置、DNS解析、主机名设置等。文章还详细解释了各目录和文件的作用,帮助读者更好地理解和管理Linux系统。
36 2
|
15天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
23天前
|
Linux 开发工具 Perl
Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
【10月更文挑战第20天】Linux命令替换目录下所有文件里有"\n"的字符为""如何操作?
34 4
|
1月前
|
存储 Linux 编译器
cmake的单目录和多目录的使用(Linux和Windows)
本文介绍了在Windows和Linux平台上使用CMake构建单目录和多目录项目的步骤,包括如何配置CMakeLists.txt文件以及如何生成和使用可执行文件、库文件。
20 2
|
1月前
|
移动开发 Linux
Linux 文件与目录管理
Linux 文件与目录管理
22 3
|
1月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
198 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
2月前
|
Linux
深入理解Linux中的cp命令:文件与目录的复制利器
深入理解Linux中的cp命令:文件与目录的复制利器