温馨提示×

linux readdir能读隐藏文件吗

小樊
48
2026-09-20 22:31:26
栏目: 智能运维

在 Linux 下,readdir() 是可以读取到隐藏文件的。

说明

  • 在 Linux 中,“隐藏文件”只是文件名以 . 开头的文件(例如 .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 或遇到特定异常(比如权限、符号链接),可以告诉我具体场景。

0 踩