迭代输入文件标志

时间:2016-12-08 19:24:26

标签: bash loops unix iteration filenames

我在计算集群上使用Unix中的软件,我需要数百个输入文件进行组合分析,这需要使用-f标志指定每个文件,它就像:

software -f file1.ext -f file2.ext -f file3.ext

简单的bash循环并不能让它理解每个文件,例如:

for i in *ext; do software -f ${i}; done

更简单的方法也不起作用:

software -f *ext

指定文件所在的文件夹不起作用:

software -f .

即使是较酷的bash脚本也不起作用(实际上与简单循环没有什么不同):

#/bin/bash
for i in $(ls *.ext | rev | cut -c 5- | rev | uniq)
do
software -f ${i}.ext
done

所以我需要的是一种让软件通过迭代-f来识别同一输入标志中的所有文件的方法。我相信。类似的东西:

for i in *ext; for each -f; do software -f ${i}; done

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以使用适当的选项迭代构建数组。

for f in *ext; do
  opts+=(-f "$f")
done
software "${opts[@]}"