Repetir argumento de línea de comando

Repetir argumento de línea de comando

Quiero empezar distinguiendo queComando repetido con diferentes nombres de archivono es lo que estoy preguntando.

Mi pregunta es, ¿cómo se crea un comando único con un directorio de nombres de archivos, cada uno de ellos precedido por la parte --thingy del comando? En mi aplicación específica, estoy usando GATK (aunque esta pregunta trata sobre cómo crear la llamada a la línea de comando), y aún más específicamenteGenotipoGVCF. Mi problema es que el comando debería verse así:

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

pero tengo 93 archivos variantes, por lo que la --variantlínea debe repetirse 93 veces, cada una con una ruta de archivo diferente. Están todos juntos en el mismo directorio y todos tienen la misma extensión (*.g.vcf).

He pensado en hacer algo, find -exec +pero no se me ocurre una manera de adjuntar --variantcada resultado. xargsTambién parece prometedor, pero no entiendo muy bien qué hace y por eso tuve problemas para configurarlo. En este punto, podría hacer que un script de Python genere el comando y luego simplemente lo pegue en la terminal, pero quería saber si hay una forma "correcta" de hacer esto en el futuro.

Respuesta1

En teoría, esto podría ayudar, pero nunca he probado algo así. Si yo fuera usted, primero lo probaría con algún tipo de echocomando, antes de iniciar el javaprograma.

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

Respuesta2

El truco consiste en obtener la lista que desea y manipular cada elemento. Intente cambiar al directorio con sus archivos variantes y algo como

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

Luego simplemente sustituya ${FILES} en su comando.

HTH.

información relacionada