centos

如何使用CentOS readdir递归读取目录

小樊
31
2025-12-27 10:37:21
栏目: 智能运维

在 CentOS 系统中,你可以使用 readdir 函数来递归地读取目录

首先,确保你已经安装了必要的开发工具和库。在 CentOS 上,你可以使用以下命令安装它们:

sudo yum groupinstall "Development Tools"
sudo yum install glibc-devel

接下来,创建一个名为 recursive_readdir.c 的 C 文件,并将以下代码粘贴到文件中:

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>

void read_directory(const char *path);

int main(int argc, char *argv[]) {
    if (argc != 2) {
        printf("Usage: %s <directory_path>\n", argv[0]);
        return 1;
    }

    read_directory(argv[1]);
    return 0;
}

void read_directory(const char *path) {
    struct dirent *entry;
    DIR *dp = opendir(path);

    if (!dp) {
        perror("opendir");
        return;
    }

    while ((entry = readdir(dp))) {
        if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
            continue;
        }

        char full_path[PATH_MAX];
        snprintf(full_path, sizeof(full_path), "%s/%s", path, entry->d_name);

        struct stat st;
        if (stat(full_path, &st) == -1) {
            perror("stat");
            continue;
        }

        if (S_ISDIR(st.st_mode)) {
            read_directory(full_path);
        } else {
            printf("%s\n", full_path);
        }
    }

    closedir(dp);
}

保存文件后,使用以下命令编译 C 文件:

gcc -o recursive_readdir recursive_readdir.c

现在,你可以使用以下命令运行程序,递归地读取指定目录中的所有文件和子目录:

./recursive_readdir /path/to/directory

请将 /path/to/directory 替换为你想要递归读取的目录路径。

0
看了该问题的人还看了