温馨提示×

debian readdir怎么过滤隐藏文件

小樊
42
2026-09-10 08:21:13
栏目: 智能运维

在 Debian(或其他 Linux 系统)里,“隐藏文件”通常指 以 . 开头的文件/目录(如 .bashrc、.config)。

下面按常见使用场景说明如何 过滤(排除)隐藏文件。


1. C 语言 readdir() 过滤隐藏文件

readdir() 返回 struct dirent,里面包含 d_name。

示例:只显示非隐藏文件

#include <stdio.h>
#include <dirent.h>
#include <string.h>

int main() {
    DIR *dir = opendir(".");
    struct dirent *entry;

    while ((entry = readdir(dir)) != NULL) {
        // 过滤隐藏文件
        if (entry->d_name[0] == '.')
            continue;

        printf("%s\n", entry->d_name);
    }

    closedir(dir);
    return 0;
}

✅ 这样会跳过 . 和 .. 以及所有 .xxx 文件


2. Shell 中过滤隐藏文件

ls 默认就不显示隐藏文件

ls

明确排除(更严格)

ls -A | grep -v '^\.'

或:

for f in *; do
  [ -e "$f" ] && echo "$f"
done

3. find 排除隐藏文件

find . -maxdepth 1 -name '[^.]*'

或:

find . -maxdepth 1 ! -name '.*'

4. Python os.listdir 过滤

import os

for name in os.listdir('.'):
    if not name.startswith('.'):
        print(name)

5. 补充说明

  • . 和 .. 也是“隐藏”的(以 . 开头)
  • 有些文件系统可能有其他隐藏机制(如 macOS 的 .DS_Store,但规则仍是 . 开头)
  • 如果是 按文件属性隐藏(很少见,非 Linux 标准),需要用 stat() 判断权限

如果你能说明:

  • 用的是 C / Shell / Python / 其他语言
  • 是否要 包含子目录
  • 是否要 区分文件和目录

我可以给你更精确的示例。

0 踩