2015-09-24 2 views
0

У меня есть серия каталогов, обозначенная species в коде ниже. Я хочу запустить ряд команд по файлам в каждом каталоге, а затем сохранить вывод как один файл в соответствующем каталоге. Со следующим кодом я могу сохранить только выходные данные для последнего каталога. Мне было интересно, как я могу решить эту проблему? Благодаря!Сохранение вывода нескольких файлов bash

for dir in ${Addr1}/*/*_files/seq* 
do 
    species=`echo $dir | cut -f8 -d"/"` 
    chr=`echo $dir | cut -f10 -d"/"` 
    echo -n -e "${chr} \t"; ./script.py ${Addr1}/${species}/${species}_files/$chr 
done > ${Addr1}/${species}/${species}_estimated 
+0

Результат получается из этой последней строки 'echo' /' script.py'? Затем выполните перенаправление только этой линии/этих команд. –

+0

Да, результат исходит из последней строки с эхом и script.py. Извините, я не понимаю вторую часть вашего комментария. – Homap

+0

'echo .... >> output_file; ./script.py .... >> output_file' или '{echo ...; ./script.py; } >> output_file' Вы открываете выходной файл * один раз * ** вне ** вашего цикла. Вам нужно открыть его в петле для каждого вида. –

ответ

3

У вас есть логическая проблема:

for dir in ${Addr1}/*/*_files/seq* 
do 
    species=`echo $dir | cut -f8 -d"/"` 
    # ... 
done > ${Addr1}/${species}/${species}_estimated 

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

Вместо этого, попробуйте следующее:

for dir in ${Addr1}/*/*_files/seq* 
do 
    species=`echo $dir | cut -f8 -d"/"` 
    chr=`echo $dir | cut -f10 -d"/"` 
    { 
     echo -n -e "${chr} \t"; 
     ./script.py ${Addr1}/${species}/${species}_files/$chr; 
    } >> ${Addr1}/${species}/${species}_estimated 
done 

Теперь, когда выходной файл открыт, переменная species правильно установлена. Каждый выходной файл будет закрыт, а следующий будет открыт в течение каждой итерации цикла.

+0

Вы имеете в виду, что невозможно иметь отдельный выход для каждого вида? – Homap

+0

О, ваше заявление о «сохранении вывода как одного файла» смутило меня. Я обновил свой ответ для создания нескольких выходных файлов. –

+0

@EtanReisner: спасибо, исправлено сейчас. –

Смежные вопросы