在 Debian(以及其它 Linux 发行版)里,opendir() 本身不支持递归。
具体来说:
opendir() 是什么opendir() 是 POSIX / C 标准库函数(在 <dirent.h> 中),作用是:
DIR *readdir() 读取该目录下的直接条目它只能打开并遍历“单层目录”,不会自动进入子目录。
如果你要“递归遍历目录”,常见做法是:
opendir() + readdir()stat() / lstat() 判断是否是目录opendir()(递归)示例(简化逻辑):
void list_dir(const char *path) {
DIR *dir = opendir(path);
struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR) {
// 递归调用
}
}
closedir(dir);
}
如果你不想自己写递归:
nftw()(POSIX,支持递归遍历)fts_open() / fts_read()(BSD 风格,功能更强)find、rsync --recursive 等opendir():不支持递归如果你是想问 某个具体命令或库(比如 cp、rsync、Python、shell)里的“copendir”,可以补充说明,我可以更针对性回答。