
まず、異なるファイル名でコマンドを繰り返す私が尋ねているのはそれではありません。
私の質問は、ファイル名のディレクトリを含む単一のコマンドを、コマンドの先頭に--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 +
方法が思いつきませんでした。も有望に思えますが、それが何をするのかよく理解していないので、設定に問題がありました。この時点では、Python スクリプトでコマンドを生成し、それをターミナルに貼り付けるだけかもしれませんが、将来的にこれを行うための「正しい」方法があるかどうかを知りたいと思いました。--variant
xargs
答え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} を代入します。
ありがとう。