#include #include #include #include main() { DIR *d1, *d2; struct dirent *de1, *de2; struct stat buf; int any; any = 0; d1 = opendir("."); if (d1 == NULL) { perror("opendir ."); exit(1); } for (de1 = readdir(d1); de1 != NULL; de1 = readdir(d1)) { if (stat(de1->d_name, &buf) == 0) { if (S_ISDIR(buf.st_mode) && strcmp(de1->d_name, ".") != 0 && strcmp(de1->d_name, "..") != 0) { d2 = opendir(de1->d_name); if (d2 == NULL) { perror(de1->d_name); exit(1); } for (de2 = readdir(d2); de2 != NULL; de2 = readdir(d2)) { if (strcmp(de2->d_name, "f1.txt") == 0) { printf("%s/%s\n", de1->d_name, de2->d_name); any = 1; } } closedir(d2); } } } closedir(d1); if (!any) printf("None Found\n"); exit(0); }