在 Debian 里 readdir 本身不是“哪一款好用”的问题,而是你要用什么接口/工具来“读目录”。我分几种常见场景给你说明,基本就能对号入座了。
readdir()(POSIX 标准)这是 最常用、最稳定 的方式。
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir(".");
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
}
✅ 结论:
如果你写 C/C++,
readdir就是最好用的,没有之一
| 接口 | 说明 | 建议 |
|---|---|---|
readdir_r() |
老线程安全版本 | ❌ 已废弃,不推荐 |
getdents() |
Linux 内核系统调用 | ❌ 太底层,一般不用 |
scandir() |
带过滤/排序 | ✅ 偶尔有用 |
nftw() |
递归遍历目录 | ✅ 适合递归 |
Debian 里没有 readdir 命令,但你可能是在找这些:
ls
for f in *; do
echo "$f"
done
find .
strace ls
import os
for name in os.listdir("."):
print(name)
或者用:
import os
for root, dirs, files in os.walk("."):
print(files)
Debian 下:
- C/C++:用
readdir()✅- Shell:用
ls/for/find✅- Python:用
os.listdir()✅不存在“哪款 readdir 好用”,只有“用哪种方式读目录更合适”
如果你能补充一句:
我可以直接给你最优方案 + 示例代码。