在 Debian(其实不只是 Debian,而是 Linux/Unix 系统)里,readdir 不是命令,而是一个 C 语言函数,用来读取目录内容。下面分几种常见情况给你说明。
readdir 是什么?readdir 是 POSIX 标准 API,定义在:
#include <dirent.h>
用于 逐个读取目录中的文件和子目录。
readdir(最常见)#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;
}
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_REG、DT_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 # ❌ 错误
✅ 正确方式:
ls、find如果你只是想 列出目录内容,用这些:
ls
ls -l
ls -a
或者:
find . -maxdepth 1
| 场景 | 做法 |
|---|---|
| C 程序读目录 | opendir → readdir → closedir |
| 查看目录内容 | ls |
| 遍历目录 | find |
| readdir 可脚本用? | ❌ 不可以 |
如果你是想:
可以告诉我具体场景,我可以更详细讲。