温馨提示×

ubuntu copendir怎样读取文件列表

小樊
45
2026-10-17 07:18:39
栏目: 智能运维

在 Ubuntu(Linux)下,使用 C 语言通过 opendir / readdir 可以读取目录中的文件列表。下面是一个标准用法示例,适合在 Ubuntu 上编译运行。


基本步骤

  1. opendir() 打开目录
  2. readdir() 逐个读取目录项
  3. closedir() 关闭目录

示例代码(C 语言)

#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    DIR *dir;
    struct dirent *entry;

    if (argc < 2) {
        printf("用法: %s <目录路径>\n", argv[0]);
        return 1;
    }

    dir = opendir(argv[1]);
    if (dir == NULL) {
        perror("opendir");
        return 1;
    }

    while ((entry = readdir(dir)) != NULL) {
        printf("%s\n", entry->d_name);
    }

    closedir(dir);
    return 0;
}

编译与运行

gcc listdir.c -o listdir
./listdir /home/yourname

常见补充说明

1. 过滤掉 . 和 ..

if (strcmp(entry->d_name, ".") == 0 ||
    strcmp(entry->d_name, "..") == 0)
    continue;

2. 判断是文件还是目录

#include <sys/stat.h>

struct stat st;
stat(entry->d_name, &st);
if (S_ISDIR(st.st_mode))
    printf("[目录] %s\n");
else
    printf("[文件] %s\n");

3. 只读取普通文件

if (entry->d_type == DT_REG)
    printf("%s\n", entry->d_name);

如果你需要:

  • 递归读取子目录
  • 按后缀过滤(如 .txt)
  • C++ / Python 版本

可以继续问我。

0 踩