gpt4 book ai didi

c - 搜索目录中的所有子目录

转载 作者:行者123 更新时间:2023-11-30 15:21:55 25 4
gpt4 key购买 nike

所以我得到了帮助,现在我有一个程序可以搜索当前目录并打印出该文件(如果存在),现在我该如何制作它,以便它可以遍历不同的目录并在所有目录中搜索该文件它的子目录?

我想如果我替换了“.”行使用“..”,它会返回到上一个目录,并查找所有子目录,但它只查找该目录中的文件,而不进入子目录。

//headers here

char *FINDME=NULL;

int filter (const struct dirent *p){
int retval=0;
if (fnmatch(FINDME,p->d_name, 0) == 0)
retval = 1;
return retval;
}

int main(int argc, char **argv){
struct dirent **namelist;
int i = 0;

FINDME = (argc > 1) ? argv[1] : "testfilename";
i = scandir("..", &namelist, filter, alphasort);

if(i < 0){
perror("scandir");
exit(1);
}

while(i--){
printf("%s\n", namelist[i]->d_name);
free(namelist[i]);
}
free(namelist);

return 0;
}

最佳答案

遍历文件系统实际上是遍历树(不包括硬链接(hard link)和符号链接(symbolic link)),因此您可以使用递归方式:

下面的伪代码会给你一个想法:

Function TravelDirectory (String dirname, String filename)
Foreach item=Element in dirname Do
If item.type is File AND item.name==filename
Print item
Else If item.type is Directory
TravelDirectory (item.name, filename)
EndFor
EndFunction

例如,要在 Linux 下用 C 语言实现此功能,您可以使用 opendir()readdir()函数而不是 scandir()readdir()将为您提供 Foreach 的迭代器部分。

关于c - 搜索目录中的所有子目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com