在 Ubuntu(Linux) 下,readdir() 可以遍历到隐藏文件,但需要你自己处理。
. 开头的文件(如 .bashrc)readdir() 不会自动跳过隐藏文件.xxx).(当前目录)..(上级目录)#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
.hidden
file.txt
需要手动判断:
if (entry->d_name[0] == '.')
continue;
if (entry->d_name[0] == '.')
printf("%s\n", entry->d_name);
ls 默认不显示隐藏文件,是因为 ls 自己过滤了ls -a 才会显示,本质也是调用 readdir()✅ 结论:readdir() 能遍历隐藏文件,是否处理由你决定。
如果你用的是 C / C++ / Python / shell,我也可以给你对应示例。