温馨提示×

debian readdir怎么用

小樊
34
2026-07-13 18:29:25
栏目: 智能运维

在 Debian(其实不只是 Debian,而是 Linux/Unix 系统)里,readdir 不是命令,而是一个 C 语言函数,用来读取目录内容。下面分几种常见情况给你说明。


一、readdir 是什么?

readdirPOSIX 标准 API,定义在:

#include <dirent.h>

用于 逐个读取目录中的文件和子目录


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

1️⃣ 基本用法示例

#include <stdio.h>
#include <dirent.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️⃣ 编译运行(Debian 下)

gcc readdir.c -o readdir
./readdir

三、readdir 相关结构体

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

常用字段:

  • d_name:文件名
  • d_type:文件类型(如 DT_REGDT_DIR

四、用 readdir 判断文件类型

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

int main() {
    DIR *dir = opendir(".");
    struct dirent *entry;

    while ((entry = readdir(dir)) != NULL) {
        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);
    }

    closedir(dir);
    return 0;
}

五、常见误区

readdir 不能直接在 shell 用

readdir   # ❌ 错误

✅ 正确方式:

  • 写 C 程序
  • 或用 lsfind

六、Shell 中“等价”的命令

如果你只是想 列出目录内容,用这些:

ls
ls -l
ls -a

或者:

find . -maxdepth 1

七、总结

场景 做法
C 程序读目录 opendir → readdir → closedir
查看目录内容 ls
遍历目录 find
readdir 可脚本用? ❌ 不可以

如果你是想:

  • 写 C 程序
  • 看懂 readdir 源码
  • 在 C++ / Python 中用类似功能

可以告诉我具体场景,我可以更详细讲。

0