重复命令行参数

重复命令行参数

我想首先区分一下使用不同的文件名重复命令不是我要问的。

我的问题是,如何构建一个包含文件名目录的单个命令,每个命令都以命令的 --thingy 部分开头?在我的特定应用程序中,我使用 GATK (尽管这个问题是关于构建命令行调用),更具体地说基因型GVCF。我的问题是该命令应该如下所示:

java -jar GenomeAnalysisTK.jar \
-T GenotypeGVCFs \
-R reference.fasta \
--variant sample1.g.vcf \
--variant sample2.g.vcf \
-o output.vcf

但我有 93 个变体文件,因此该--variant行需要重复 93 次,每次都有不同的文件路径。它们都位于同一目录中,并且都具有相同的扩展名 (*.g.vcf)。

我已经考虑过做一些事情,find -exec +但想不出一种方法来附加--variant到每个结果。xargs看起来也很有希望,但我不明白它的作用非常好,因此在设置它时遇到了麻烦。此时,我可能只是让一个 Python 脚本生成命令,然后将其粘贴到终端中,但我想知道将来是否有“正确”的方法来执行此操作。

答案1

从理论上讲,这可能会有所帮助,但我从未尝试过这样的事情。如果我是你,我会echo在启动程序之前先使用某种命令对其进行测试java

java -jar GenomeAnalysisTK.jar \
-T GenotypeGVCFs \
-R reference.fasta \
$(for v in *.g.vcf;do echo --variant ${v}" \\";done) -o output.vcf

答案2

诀窍是获取所需的列表,并操作每个元素。尝试更改为包含变体文件的目录,例如

FILES=$(ls | sed 's/^/--variant /')
echo ${FILES}

然后只需将 ${FILES} 替换到您的命令中即可。

HTH。

相关内容