我有一个可执行文件,我需要多次从命令行运行,每次运行程序时输入不同的文件作为输入。我正在使用UNIX,文件存储在名为tests
的目录中,与程序位于同一目录中。
我想做类似以下的事情:
for i in {1..50} ; do ./program ; done
除了每次运行时输入不同的文件。那么,迭代目录tests
中的所有文件将是我想要做的,对吗?
不太确定如何/谷歌为此(已经尝试过)。
有什么见解?谢谢!
答案 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
来避免这些问题。