2015-01-12 3 views
1

мне нужно сделать что-то вроде этого:Петля на разных файлах

command-line FILE1=fwd_common-name FILE2=rev_common-name > output=common-name.new 

Мне нужно сделать задачу с Unix с программой, которая требует двух файлов, мои файлы имеют следующие имена:

fwd_common-name и rev_common-name

Я хочу, чтобы выход с common-name.new

Я пробовал:

for f1 in ../fwd_* ; do for f2 in ../rev_* ; do command "$f1" "$f2" > `base-name $f1.new` ; done ; done 

Но это не сработает.

Спасибо.

ответ

0

Я предполагаю, что вы хотите запустить свою команду только по парам файлов с соответствующими common-name. Если это неверно, остальная часть моего комментария не имеет отношения к вам, и вы должны игнорировать его. :)

Давайте назовем число пар N, так что вы хотите N казни. Этот скрипт в письменном виде N исполнение: все комбинации этих файлов, независимо от того, соответствуют они или нет. Вместо этого используйте один цикл над файлами fwd_* и укажите имя файла rev_ явно, чтобы оно совпало.

+0

Вот очень похожий вопрос: https://stackoverflow.com/questions/15087634/bash-for-loop-two-variables-linked?rq=1 – broadmonkey

+0

И еще! Надеюсь, что они полезны: https://stackoverflow.com/questions/23740084/matching-two-files-via-a-for-loop-bash?lq=1 – broadmonkey

+0

Спасибо broadmonkey, вы правы, проблема в том, что у меня есть много ненужных комбинаций, но указать имя одной из двух файлов сложно для меня, потому что я работаю с большим количеством файлов ... –