在 Linux 下,readdir() 是可以读取到隐藏文件的。
. 开头的文件(例如 .bashrc、.ssh)。readdir() 会返回目录下的所有目录项,包括:
. 开头). 和 ..#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;
}
运行后你会发现 .bashrc、.git 等隐藏文件都会被打出来。
ls 默认不显示隐藏文件,但 ls -a 会显示readdir() 不像 ls,它不会自动过滤隐藏文件需要自己过滤:
if (entry->d_name[0] == '.') continue;
✅ readdir() 能读隐藏文件
❌ 它不会自动排除 . 开头的文件
如果你是在用 C / C++ / Python / Shell 或遇到特定异常(比如权限、符号链接),可以告诉我具体场景。