在 Debian(以及所有 Linux) 中,readdir 不是 shell 命令,而是 C 语言标准库函数,用于读取目录内容。下面分几种常见情况说明。
readdir 是 POSIX 标准 C 函数,定义在:
#include <dirent.h>
用于遍历目录中的文件和子目录。
#include <stdio.h>
#include <dirent.h>
int main() {
DIR *dir = opendir(".");
struct dirent *entry;
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
输出当前目录下的所有文件和目录(包括 . 和 ..)。
struct dirent {
ino_t d_ino; // inode 号
off_t d_off; // offset
unsigned short d_reclen; // 长度
unsigned char d_type; // 文件类型
char d_name[256]; // 文件名
};
常用 d_type:
| 值 | 含义 |
|---|---|
| DT_REG | 普通文件 |
| DT_DIR | 目录 |
| DT_LNK | 符号链接 |
如果你只是想在 Shell 中列出目录内容,不需要 readdir:
ls
或者:
for f in *; do
echo "$f"
done
Python 底层也是用 readdir:
import os
for name in os.listdir("."):
print(name)
❌ 不能在 shell 里直接调用 readdir
✅ readdir 是 C 库函数
❌ readdir 不能递归子目录
✅ 需要自己写递归逻辑
如果你要开发 C 程序,确保有:
sudo apt install build-essential
如果你是想:
可以告诉我你的具体使用场景,我可以给你更针对性的示例。