-1

如何在 C 中搜索目录及其子目录中的文件?我不允许使用find ,我必须使用opendir,readdirstat.

ls -ln如果文件确实存在,我想执行类似命令的操作。

4

3 回答 3

1

要遍历目录,您将需要:opendir(3)readdir(3)closedir(3)

要检查文件的类型(查看它是否是目录以及是否应该在其中递归搜索),您将需要stat(2)

你会想要检查

(struct stat).st_mode & S_IFDIR

查看文件是否为目录。有关详细信息,请参阅<sys/stat.h>

于 2012-06-11T15:58:02.777 回答
1

如果我们尝试用 C 编写一小段代码,那么我们可以轻松地完成这个搜索活动。假设您需要在 /home/Jack/ 中搜索 abc.txt,然后只需打开文件流并将文件路径作为参数传递。现在当这个语句将被执行时,它会尝试打开现有的文件。如果文件存在,此 API 将返回非零,否则返回 -1 或零。

于 2012-06-12T10:07:00.983 回答
0

您已经提供了基本答案:opendir// readdirclosedir当您遍历目录条目时,您会检查每个条目是指文件还是目录。那些引用目录的,你也遍历(通常是递归的)。对于那些引用文件的人,您可以将它们的名称与您正在寻找的文件进行比较,看看您是否找到了它。

另一个小细节:您可能还想检查符号链接。符号链接可以(例如)引用父目录,这可能/可能导致无限递归。您可能想要完全忽略符号链接,或者您可能想要保留至少已经开始遍历的目录列表,并且仅当符号链接中的内容不在列表中时才解析/遍历它。

于 2012-06-11T15:26:36.660 回答