使用不同的文件作为输入多次运行c ++程序

时间:2013-04-26 00:34:17

标签: macos shell unix

我有一个可执行文件,我需要多次从命令行运行,每次运行程序时输入不同的文件作为输入。我正在使用UNIX,文件存储在名为tests的目录中,与程序位于同一目录中。

我想做类似以下的事情:

for i in {1..50} ; do ./program ; done

除了每次运行时输入不同的文件。那么,迭代目录tests中的所有文件将是我想要做的,对吗?

不太确定如何/谷歌为此(已经尝试过)。

有什么见解?谢谢!

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。一种非常合理的方法是将程序重写为更像unix,并接受多个文件名作为尾随参数,以便您可以简单地调用:

./program tests/*

在不更改程序的情况下,您也可以执行任何操作(按优先顺序递减):

find tests -exec ./program {} \;
for f in tests/*; do ./program "$f"; done
ls -f tests | while read f; do ./program tests/"$f"; done  # Use caution

请注意,许多人会反对使用ls,就像上面第三个例子中所做的那样,因为如果任何文件在其名称中包含换行符,它会导致错误的行为,但它的行为优于glob该目录包含许多文件。您可以使用find来避免这些问题。