Wiederholen des Befehlszeilenarguments

Wiederholen des Befehlszeilenarguments

Ich möchte zunächst unterscheiden, dassWiederholen des Befehls mit unterschiedlichen Dateinamenist nicht das, was ich frage.

Meine Frage ist, wie man einen einzelnen Befehl mit einem Verzeichnis von Dateinamen erstellt, denen jeweils der Teil --thingy des Befehls vorangestellt ist? In meiner spezifischen Anwendung verwende ich GATK (obwohl es in dieser Frage um das Erstellen des Befehlszeilenaufrufs geht) und noch genauerGenotypGVCFs. Mein Problem ist, dass der Befehl so aussehen sollte:

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

aber ich habe 93 Variantendateien, und daher --variantmuss die Zeile 93 Mal wiederholt werden, jedes Mal mit einem anderen Dateipfad. Sie befinden sich alle zusammen im selben Verzeichnis und haben alle dieselbe Erweiterung (*.g.vcf).

Ich habe mir überlegt, etwas damit zu machen, find -exec +aber mir ist keine Möglichkeit eingefallen, das --variantan jedes Ergebnis anzuhängen. xargsscheint auch vielversprechend, aber ich verstehe nicht wirklich, was es macht, und hatte daher Probleme beim Einrichten. An diesem Punkt könnte ich den Befehl einfach von einem Python-Skript generieren lassen und ihn dann einfach in das Terminal einfügen, aber ich wollte wissen, ob es für die Zukunft eine „richtige“ Möglichkeit gibt, dies zu tun.

Antwort1

Theoretisch könnte das helfen, aber ich habe so etwas noch nie ausprobiert. An deiner Stelle würde ich es einfach echoerst mit einem Befehl testen, bevor ich das javaProgramm starte.

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

Antwort2

Der Trick besteht darin, die gewünschte Liste zu erhalten und jedes Element zu bearbeiten. Wechseln Sie in das Verzeichnis mit Ihren Variantendateien und geben Sie etwas ein wie

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

Ersetzen Sie dann einfach ${FILES} durch Ihren Befehl.

HTH.

verwandte Informationen