在 Debian(以及其它 Linux 系统)上,如果你说的是 C 语言中使用 opendir() 来遍历目录并获取“文件数”,通常做法是用 opendir + readdir,然后统计符合条件的条目。
下面分几种常见情况说明。
opendir + readdir 统计文件数(C 语言)#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;
}
. 和 ..while ((entry = readdir(dir)) != NULL) {
if (strcmp(entry->d_name, ".") == 0 ||
strcmp(entry->d_name, "..") == 0)
continue;
count++;
}
#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++;
}
}
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++) 或 只统计某种类型文件,可以告诉我,我可以给你更精确的示例。