1

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

我想做类似于以下的事情:

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

除了每次运行时使用不同的文件作为输入。因此,遍历目录中的所有文件tests将是我想要做的,对吗?

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

有什么见解吗?谢谢!

4

1 回答 1

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在上面的第三个示例中使用 as,因为如果任何文件的名称中包含换行符,它可能会导致不正确的行为,但如果目录包含许多文件,它的行为会比 glob 更好。您可以使用find.

于 2013-04-26T11:35:05.967 回答