¿Cómo hago coincidir los nombres de archivo en diferentes directorios en bash?

-2

Tengo dos directorios con archivos en ellos.

dir_one contiene archivos con nombres como:

10.recode.vcf.map

El patrón de nombre de archivo dir_two tiene este aspecto:

genetic_map_GRCh37_chr10.txt

Escribí un script R que hace algo con los archivos. Para ejecutar el script, tengo que ejecutar el siguiente comando:

Rscript interpolation.R 10.recode.vcf.mapgenetic_map_GRCh37_chr10.txt

Ahora quiero ejecutar este script 22 veces, pero no puedo encontrar una manera de hacer coincidir dos archivos en directorios diferentes.

Hasta ahora solo descubrí cómo extraer el número común de un nombre de archivo:

for i in ./map_files/*
do
        echo ${i} ${i} | cut -d'/' -f 3 | cut -d'.' -f 1
done

No estoy seguro de qué hacer a continuación ... ¿Alguien puede aconsejar?

YKY
fuente
¿Debería haber un espacio entre mapy geneticen su secuencia de comandos? Es necesario que nos dirá más acerca de los contenidos de los directorios ( dir_one, dir_twoy map_files) y explicar los criterios de emparejamiento antes de que podamos ayudar.
AFH
El criterio de emparejamiento es un número. Número 10 en el ejemplo.
YKY
Ambos directorios contienen muchos nombres de archivos. Dentro del directorio, los nombres de archivo difieren solo por número (10 en el ejemplo, por lo que en lugar de 10 habrá 9, 7, 22, etc.).
YKY

Respuestas:

0

Parece que lo descubrí. Usé la expansión de parámetros bash de esta manera:

#/bin/bash

for i in ./map_files/*
do
        t=${i##*/}
        t=${t%%.*}
        Rscript interpolation.R $i ./genetic_map_HapMapII_GRCh37/*chr$t.*
done
YKY
fuente
1
No podría haber trabajado esto hacia fuera de la información que nos dio: deduzco que map_fileses dir_one, pero no se lo dije; y la cadena de respuesta no coincide con el ejemplo en su pregunta. Tenga más cuidado si hace preguntas en el futuro.
AFH