
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 --variant
lí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 --variant
cada resultado. xargs
Tambié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 echo
comando, antes de iniciar el java
programa.
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.