温馨提示×

debian readdir怎么获取文件

小樊
46
2026-07-13 19:09:23
栏目: 智能运维

在 Debian(Linux)下,readdir 通常指 POSIX 的 readdir() 函数,用于读取目录内容。下面按常见场景给你说明。


一、使用 C 语言 readdir(最常见)

1️⃣ 基本用法

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

int main() {
    DIR *dir;
    struct dirent *entry;

    dir = opendir(".");  // 打开当前目录
    if (dir == NULL) {
        perror("opendir");
        return 1;
    }

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

    closedir(dir);
    return 0;
}

2️⃣ 编译运行

gcc readdir.c -o readdir
./readdir

二、struct dirent 常用字段

struct dirent {
    ino_t          d_ino;       // inode 号
    off_t          d_off;
    unsigned short d_reclen;
    unsigned char  d_type;      // 文件类型
    char           d_name[256]; // 文件名
};

判断文件类型(可选)

if (entry->d_type == DT_REG) {
    printf("普通文件: %s\n", entry->d_name);
} else if (entry->d_type == DT_DIR) {
    printf("目录: %s\n", entry->d_name);
}

⚠️ 注意:d_type 在某些文件系统(如 NFS)上可能为 DT_UNKNOWN


三、过滤 ...

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

四、获取完整文件信息(推荐)

如果你需要文件大小、权限等,建议配合 stat()

#include <sys/stat.h>

struct stat st;
stat(entry->d_name, &st);

五、Shell 中“readdir”的等价方式

如果你不是写 C 程序,而是想在 Debian 下列出文件

ls
ls -l

或者:

for f in *; do
    echo "$f"
done

六、常见误区

readdir 不能直接获取文件内容
✅ 它只能获取目录项(文件名 + 类型)


七、适用系统

  • ✅ Debian
  • ✅ Ubuntu
  • ✅ 所有 Linux
  • ✅ POSIX 系统(FreeBSD、macOS)

如果你是想:

  • 写 C 程序
  • 用 Python / Go / Rust
  • 递归遍历目录
  • 获取隐藏文件

可以直接告诉我,我给你对应示例。

0