【发布时间】:2020-04-03 13:18:30
【问题描述】:
我在 Linux 中有一个 C 程序,它从结构 DIR 收集目录条目(类型为“struct dirent*”)并显示它们。现在,我的目标是递归遍历文件系统,所以我需要分别识别 Directories 和 Files。
DIR* cwd = opendir(".");
struct dirent* directoryEntry = NULL;
while((directoryEntry = readdir(cwd)) != NULL) {
printf("%s ", directoryEntry->d_name);
}
closedir(cwd);
我知道你可以说如果文件末尾有一些扩展名“.mp4”或“.txt”,我们可以识别文件。但也可能存在没有任何扩展名的文件。
struct dirent*有没有属性可以判断是文件还是目录?
【问题讨论】:
-
在这里搜索
DT_DIR:man7.org/linux/man-pages/man3/readdir.3.html -
如果您的文件系统不支持
d_type,请使用lstat() -
ftw()也可能感兴趣。
标签: c linux unix operating-system ls