温馨提示×

debian copendir如何获取文件数

小樊
44
2026-10-09 22:11:42
栏目: 智能运维

在 Debian(以及其它 Linux 系统)上,如果你说的是 C 语言中使用 opendir() 来遍历目录并获取“文件数”,通常做法是用 opendir + readdir,然后统计符合条件的条目。

下面分几种常见情况说明。


一、使用 opendir + readdir 统计文件数(C 语言)

1️⃣ 统计目录下所有条目数(包括 . 和 …)

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

int main(int argc, char *argv[]) {
    DIR *dir;
    struct dirent *entry;
    int count = 0;

    if (argc < 2) {
        fprintf(stderr, "Usage: %s <dir>\n", argv[0]);
        return 1;
    }

    dir = opendir(argv[1]);
    if (!dir) {
        perror("opendir");
        return 1;
    }

    while ((entry = readdir(dir)) != NULL) {
        count++;
    }

    closedir(dir);
    printf("Total entries: %d\n", count);
    return 0;
}

2️⃣ 排除 . 和 ..

while ((entry = readdir(dir)) != NULL) {
    if (strcmp(entry->d_name, ".") == 0 ||
        strcmp(entry->d_name, "..") == 0)
        continue;
    count++;
}

3️⃣ 只统计普通文件(不含目录)

#include <sys/stat.h>

while ((entry = readdir(dir)) != NULL) {
    struct stat st;
    char path[1024];

    snprintf(path, sizeof(path), "%s/%s", argv[1], entry->d_name);
    if (stat(path, &st) == 0 && S_ISREG(st.st_mode)) {
        count++;
    }
}

二、如果你只是想在 Debian 命令行统计文件数

统计当前目录下文件数(不含子目录)

ls -l | grep "^-" | wc -l

或

find . -maxdepth 1 -type f | wc -l

统计目录下所有文件(含子目录)

find /path/to/dir -type f | wc -l

三、总结

场景 方法
C 语言遍历目录 opendir + readdir
普通文件 stat + S_ISREG
命令行 find / ls + wc

如果你是问 某个具体语言(如 Python / Shell / C++) 或 只统计某种类型文件,可以告诉我,我可以给你更精确的示例。

0 踩