题
我正在尝试检查文件夹是否具有任何子文件夹,而不会在Linux中通过其孩子迭代。到目前为止我发现的最接近的是 ftw
并停在第一个子文件夹或使用 scandir
并通过结果过滤。但是,出于我的目的,两者都是过度杀伤,我只是想要一个是/否。
在窗户上,这是通过打电话完成的 SHGetFileInfo
然后进行测试 dwAttributes & SFGAO_HASSUBFOLDER
在返回的结构上。 Linux上有这样的选择吗?
其他提示
在我看来,您提到的(以及E.James's)的可能性比C ++程序更适合Shell脚本。假定“ C ++”标签是有意的,我认为您可能会直接使用POSIX API:
// warning: untested code.
bool has_subdir(char const *dir) {
std::string dot("."), dotdot("..");
bool found_subdir = false;
DIR *directory;
if (NULL == (directory = opendir(dir)))
return false;
struct dirent *entry;
while (!found_subdir && ((entry = readdir(directory)) != NULL)) {
if (entry->d_name != dot && entry->d_name != dotdot) {
struct stat status;
stat(entry->d_name, &status);
found_subdir = S_ISDIR(status.st_mode);
}
}
closedir(directory);
return found_subdir;
}
做 getDirentries 要你想做吗?我认为如果没有目录,它将什么都不返回。我会自己尝试过,但是暂时没有进入Linux框:(
不隶属于 StackOverflow