你好,我希望有一些帮助,使一个c程序,查找目录中的文件。它会将目录和文件名称作为参数,并使用stat来获取文件的属性。我希望输出显示找到的文件的路径以及其中包含文件名的其他路径。在目录树中搜索一个文件
我已经看过dirent.h来访问目录,但我不太清楚如何正确使用它来查找它中的文件。
你好,我希望有一些帮助,使一个c程序,查找目录中的文件。它会将目录和文件名称作为参数,并使用stat来获取文件的属性。我希望输出显示找到的文件的路径以及其中包含文件名的其他路径。在目录树中搜索一个文件
我已经看过dirent.h来访问目录,但我不太清楚如何正确使用它来查找它中的文件。
char *FINDME=NULL;
int filter (const struct dirent *p)
{
int retval=0;
if (fnmatch(FINDME,p->d_name, 0)==0)
retval=1;
return retval;
}
// scandir.c
// scan the current directory "."
// usage ./scandir filename
// usage ./scandir 'filename*'
int
main(int argc, char **argv)
{
struct dirent **namelist;
int n=0;
FINDME=(argc>1)? argv[1] : "testfilename";
n = scandir(".", &namelist, filter, alphasort);
if (n < 0)
{
perror("scandir");
exit(1);
}
while (n--)
{
printf("%s\n", namelist[n]->d_name);
free(namelist[n]);
}
free(namelist);
}
你必须包括fnmatch.h
和dirent.h
再加上平时的头文件。 允许使用像“*”这样的“通配符”来选择文件名。 alphasort()
按字母顺序排列名称,并且是POSIX系统的一部分。 FNDME是全局字符串,因为回调函数过滤器不接受任何指向直接结构的指针。
哦,好的,谢谢 – MoistyTacos 2015-04-02 23:09:36
现在我该怎么做,如果我输入一个文件名出现在多个地方,它会打印出现的每个地方? – MoistyTacos 2015-04-02 23:24:22
而操作系统是什么? – 2015-04-02 16:41:03
os是unix。 – MoistyTacos 2015-04-02 21:50:38