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

Run same program on multiple files in a directory

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

那么我该如何进行呢?

编辑:所以已链接的问题使目录遍历部分正确,但主要问题是我如何 "pass each text file" 进入目录

中的程序

如果您不能在那个链接的问题中使用提升类型的解决方案,这里有用于通过目录结构递归的示例老式代码 here

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

您可以使用 find(1) command (as commented by Niels Keurentjes) 为每个文件启动不同的进程。由于每个文件都会启动一个新进程,因此没有明显的限制(但当然,启动一百万个进程需要一些时间,即使是非常短暂的进程;您可能会花费几毫秒的启动时间 - 或者几十毫秒他们 - 每个进程,加上适当的进程时间)。

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

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

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

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