我需要在目录中的数千个文件上运行命令。但是,我正在使用的程序需要一个参数文件,在该文件上指示输入和输出的名称。命令如下:
./program parameters_file.txt
这些是我需要在parameters_file.txt上进行编辑的行,即1-3行。其余各行(未显示)保持不变:
input_file = asd123.OK
input_file2 = asd123.TXT
outfile = asd123.RESULTS_OUT
如图所示,所有文件都具有匹配的名称,只有扩展名更改。
我需要对此进行循环,以便每次重新启动循环时都覆盖input_file,input_file2和outfile。类似的内容:使用第一个文件名编辑parameters_file.txt,在第一个文件上运行命令,使用第二个文件名编辑parameter_file.txt,在第二个文件上运行命令,等等。
思考:
for f in *.OK;
do
input_file = $f
input_file2 = $f.TXT
outfile = $f.RESULTS_OUT
但是我不知道如何将其合并到命令中,并且我无法在parameters_file.txt中编写循环,因为它会使程序崩溃。也许回显parameter_file.txt或用sed覆盖?
谢谢。
执行创建输入参数文件的循环,然后运行程序:
for f in *.OK;
do
echo "input_file = $f" > parameters
"input_file2 = $f.TXT" >> parameters
"outfile = $f.RESULTS_OUT" >> parameters
# Add/copy/incorporate the rest of the parameters as you wish
./program parameters
done