在目录中的多个文件上运行相同的程序

时间:2015-12-17 14:13:19

标签: c++ recursion text file-handling

我有一个目录,其中包含数千个.txt文件和包含更多文件的子文件夹。我需要运行一个C ++解析程序,该程序进入主文件夹并在文件夹及其子文件夹中的每个文本文件上运行

那我该怎么办?

编辑:所以已链接的问题会使目录遍历部分正确,但主要问题是我如何能够传递每个文本文件"到我目录中的程序

2 个答案:

答案 0 :(得分:0)

如果您不能在该链接问题中使用boost类型解决方案,那么可以通过目录结构here进行递归的旧样本代码。

答案 1 :(得分:0)

我假设您使用的是Linux或其他POSIX系统

您可以使用find(1)命令(由Niels Keurentjes注释)为每个文件启动不同的进程。由于将为每个文件启动一个新进程,因此没有明显的限制(当然,启动一百万个进程需要一些时间,即使对于非常短暂的进程;您可能花费几毫秒的启动时间 - 或者几十个它们 - 每个过程,加上适当的处理时间)。

如果每个文件处理都很快,您可能希望避免为每个文件处理启动进程的开销。然后你将使用nftw(3)库函数进行递归文件树扫描(并给它你的处理功能,这可能非常快,如果你足够小心,需要几微秒,如果处理很简单& ;快)。 AFAIK,它能够处理非常肥胖的文件树。

或者,使用find输出文件列表,让程序解析该文件列表并依次处理每个文件路径。或者在程序中嵌入一些解​​释器(如guilelua ....),编写一个脚本来扫描目录,并让它在程序中为每个文件调用一个函数。

BTW,处理数百万个文件的胖文件树应该不是问题(应该在合理的时间内完成,几分钟或几小时;瓶颈可能是磁盘I / O)

PS。另请参阅this page答案表,了解某些PC上各种操作的近似时间