温馨提示×

linux readdir支持隐藏文件吗

小樊
37
2026-09-08 15:51:28
栏目: 智能运维

在 Linux 中,readdir() 本身是支持读取隐藏文件的(以 . 开头的文件,如 .bashrc)。

关键点说明

  1. readdir() 的行为

    • readdir() 会返回目录中的所有条目(包括普通文件和隐藏文件)。
    • 它不会自动过滤掉隐藏文件。
  2. 为什么很多人“以为”不支持

    • 很多命令行工具(如 ls)默认不显示隐藏文件,除非加 -a 参数。
    • 某些封装函数或框架可能会在应用层过滤掉以 . 开头的文件,但这不是 readdir() 的限制。
  3. 示例代码(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;
}
  1. 需要注意的“伪隐藏文件”
    • . 和 .. 也会通过 readdir() 返回
    • 如果你不想要它们,需要手动跳过:
if (strcmp(entry->d_name, ".") == 0 ||
    strcmp(entry->d_name, "..") == 0)
    continue;

总结

✅ readdir() 支持并会返回隐藏文件
❌ 不是系统调用层面的限制,而是上层工具或逻辑是否过滤的问题

如果你是在 shell、Python、C++、Go 等环境中使用,也可以告诉我具体语言,我可以给你对应示例。

0 踩