C:使用nftw指定最大搜索深度

C:使用nftw指定最大搜索深度,c,nftw,C,Nftw,在C中,是否有一种方法可以指定nftw将搜索的基本目录的最大深度?例如,假设我要搜索的目录dir有一个子目录,但我只希望nftw通过子目录进行搜索,而不是子目录,或下面的任何内容 dir \_ subdir |__ file1 |__ file2 \_ sub-subdir |__ file1 |__ file2 \_ file3 根据手册页()的说明,您可以从函数参数内部停止进入子目录 根据手册中报告的示例(子目录

在C中,是否有一种方法可以指定nftw将搜索的基本目录的最大深度?例如,假设我要搜索的目录
dir
有一个子目录,但我只希望nftw通过
子目录
进行搜索,而不是
子目录
,或下面的任何内容

dir
 \_ subdir
    |__ file1
    |__ file2
     \_ sub-subdir
        |__ file1
        |__ file2
         \_ file3

根据手册页()的说明,您可以从函数参数内部停止进入子目录

根据手册中报告的示例(子目录中限制为2级),源代码为:

\define\XOPEN\u源代码500
#包括
#包括
#包括
#包括
#包括
//子目录的最大数量
#定义MAXLEVEL 2
静态整型显示信息(常量字符*fpath,常量结构stat*sb,
int tflag,结构FTW*ftwbuf)
{
//如果深度高于“最大子目录”,请继续下一个文件
如果(ftwbuf->level>MAXLEVEL){
返回0;
}
printf(“%-3s%2d%7jd%-40s%d%s\n”,
(tflag==FTW_D)?“D”:(tflag==FTW_DNR)?“DNR”:
(tflag==FTW\U DP)?“DP”:(tflag==FTW\U F)?“F”:
(tflag==FTW_-NS)?“NS”:(tflag==FTW_-SL)?“SL”:
(tflag==FTW_SLN)?“SLN”:,
ftwbuf->level,(intmax_t)sb->st_尺寸,
fpath,ftwbuf->base,fpath+ftwbuf->base);
返回0;/*以通知nftw()继续*/
}
int main(int argc,char*argv[])
{
int标志=0;
如果(argc>2&&strchr(argv[2],'d')!=NULL)
标志|=FTW|U深度;
如果(argc>2&&strchr(argv[2],'p')!=NULL)
旗帜|=FTW|U PHYS;
如果(nftw((argc<2)?”:argv[1],显示信息,20,标志)=-1){
佩罗(“nftw”);
退出(退出失败);
}
退出(退出成功);
}