重複命令列參數

重複命令列參數

我想先區分一下使用不同的檔名重複命令不是我要問的。

我的問題是,如何建立一個包含檔案名稱目錄的單一命令,每個命令都以命令的 --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。

相關內容