在 Linux 中,readdir() 本身是支持读取隐藏文件的(以 . 开头的文件,如 .bashrc)。
readdir() 的行为
readdir() 会返回目录中的所有条目(包括普通文件和隐藏文件)。为什么很多人“以为”不支持
ls)默认不显示隐藏文件,除非加 -a 参数。. 开头的文件,但这不是 readdir() 的限制。示例代码(C 语言)
#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);
return 0;
}
. 和 .. 也会通过 readdir() 返回if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
✅ readdir() 支持并会返回隐藏文件
❌ 不是系统调用层面的限制,而是上层工具或逻辑是否过滤的问题
如果你是在 shell、Python、C++、Go 等环境中使用,也可以告诉我具体语言,我可以给你对应示例。