Eu vejo que o único problema que você pode enfrentar é que você deseja alimentar o mesmo nome de arquivo. Aqui vai:
$ find /path/to/dir1 -type f -name 'desired_pos*' -exec sh -c '
awk "FNR==NR{seen[\]=\; next} seen[\$NF]{print \$ find /path/to/dir1 -type f -name 'desired_pos*' -exec sh -c '
awk "FNR==NR{seen[\]=\; next} seen[\$NF]{print \%pre%, seen[\$NF]}" \
./path/to/dir2/desired_output_${1#*_}_g $1 >/log/to/file/desires_${1#*_}' _ {} \;
1 142535974 196 HG00100 1|0
1 142535974 64 HG00101 0|1
1 142535974 63 HG00103 1|1
, seen[\$NF]}" \
./path/to/dir2/desired_output_${1#*_}_g $1 >/log/to/file/desires_${1#*_}' _ {} \;
1 142535974 196 HG00100 1|0
1 142535974 64 HG00101 0|1
1 142535974 63 HG00103 1|1
find
apenas arquivos -type f
localizados em /path/to/dir1
caminho cujo nome começa com desired_pos*
( *
significa seguido por nada ou nenhum) e, em seguida, faça o mesmo conforme explicado aqui ; só aqui arquivo2 é o arquivo em /path/to/dir2/desired_output_xxx
e $1
depois disso é arquivo1 encontrado em /path/to/dir1
em que ambos os arquivos têm pos#
partes iguais. ${1#*_}
está retornando a mesma parte que remove a menor correspondência de arquivo1 para o primeiro _
visto.