【问题标题】:Run c++ program multiple times with different files as input使用不同的文件作为输入多次运行 c++ 程序
【发布时间】:2013-04-26 00:34:17
【问题描述】:

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

我想做类似以下的事情:

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

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

不太清楚如何/用谷歌搜索什么(虽然已经尝试过)。

有什么见解吗?谢谢!

【问题讨论】:

  • for file in tests/*; do ./program "$file"; done?
  • 好的哇,谢谢。我意识到我可以用谷歌搜索我的问题,但我并没有想到正确的话。欣赏它。如果您愿意,请回答。

标签: macos shell unix


【解决方案1】:

有很多方法可以做到这一点。一种非常合理的方法是将程序重写为更像 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 来避免这些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2020-09-03
    相关资源
    最近更新 更多