温馨提示×

debian copendir怎么遍历目录

小樊
43
2026-09-01 01:09:06
栏目: 智能运维

在 Debian(以及一般的 Linux)下,遍历目录通常有两种常见方式:

  1. 使用 shell 命令(最简单)
  2. 使用 C 语言 opendir / readdir(你提到的 copendir 应该是 opendir

下面分别说明。


一、Shell 方式遍历目录(推荐)

1. ls

ls /path/to/dir

递归遍历:

ls -R /path/to/dir

2. find(最常用)

find /path/to/dir

只列目录:

find /path/to/dir -type d

3. for 循环

for f in /path/to/dir/*; do
    echo "$f"
done

二、C 语言 opendir 遍历目录(系统编程)

你提到的应该是 opendir + readdir

基本示例(C)

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

int main() {
    DIR *dir;
    struct dirent *entry;

    dir = opendir(".");
    if (dir == NULL) {
        perror("opendir");
        return 1;
    }

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

    closedir(dir);
    return 0;
}

编译运行

gcc listdir.c -o listdir
./listdir

三、递归遍历目录(C 示例思路)

如果需要递归遍历子目录,可以:

  • 判断 entry->d_type == DT_DIR
  • 跳过 ...
  • 递归调用函数

示例片段:

if (entry->d_type == DT_DIR &&
    strcmp(entry->d_name, ".") != 0 &&
    strcmp(entry->d_name, "..") != 0) {

    char path[1024];
    snprintf(path, sizeof(path), "%s/%s", dirname, entry->d_name);
    list_dir(path);
}

四、常见误区

  • copendir 不存在,正确的是 opendir
  • readdir 返回的是 struct dirent *
  • ✅ 遍历后一定要 closedir

如果你是:

  • 写脚本 → 用 find
  • 写 C 程序 → 用 opendir/readdir
  • 想用 C++ / Python → 也可以告诉我

我可以直接给你对应版本。

0