温馨提示×

ubuntu copendir能读取隐藏文件吗

小樊
34
2026-10-14 11:17:09
栏目: 智能运维

在 Ubuntu(Linux)下,opendir() 本身只是打开一个目录,它不会筛选文件,所以能不能“读取”隐藏文件,取决于你后面怎么遍历。

结论先说

  • ✅ opendir() + readdir() 可以读取隐藏文件
  • ❌ 隐藏文件不会因为名字以 . 开头而被自动忽略
  • ⚠️ 是否“看到”隐藏文件,取决于你的代码逻辑

关键点说明

1. opendir() 做什么

DIR *dir = opendir("/some/path");

只是打开目录,不区分普通文件和隐藏文件。


2. readdir() 返回什么

struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
    printf("%s\n", entry->d_name);
}

在 Ubuntu 上,readdir() 会返回:

  • 普通文件
  • 目录
  • 隐藏文件(如 .bashrc、.config)
  • . 和 ..

3. 隐藏文件是什么

在 Linux 中:

  • 以 . 开头的文件就是“隐藏文件”
  • 这只是命名约定,不是权限或特殊属性

常见误区

很多人“读不到隐藏文件”,是因为自己写了过滤:

if (name[0] == '.')
    continue;   // 手动跳过了隐藏文件

或者用了 ls 的思维:

  • ls 默认不显示隐藏文件
  • ls -a 才会显示

示例:列出包括隐藏文件的所有文件

#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;
}

如果你“只想看非隐藏文件”

if (entry->d_name[0] == '.')
    continue;

总结

  • opendir() ✅ 能访问包含隐藏文件的目录
  • readdir() ✅ 能读到隐藏文件
  • 隐藏与否只是文件名规则
  • 是否处理隐藏文件,由你自己决定

如果你是在 C / C++ / shell / Python 里用,我也可以给你对应示例。

0 踩