Я запускаю инструмент биоинформатики hmmer, и я хотел бы запустить его для более чем 7000 запросов тестовой последовательности . После запуска каждого из них я хотел бы сохранить вывод в текстовом файле, что он делает довольно легко.
Я пытаюсь создать цикл for в bash, который запускал бы hmmer для каждой тестовой последовательности в папке и записывал результат в собственный текстовый файл.
Как написать оператор внутри цикла for, чтобы он записывал в другой текстовый файл каждый раз при выполнении цикла?
В настоящее время мой код такой же
for i in First10/*; do
binaries/jackhmmer --tblout test[i].txt -E1 --noali $i largedatabase.fasta
done
for i in First10/*; do
binaries/jackhmmer --tblout test$(basename $i).txt -E1 --noali $i largedatabase.fasta
done
Я не уверен в команде, которую вы выполняете в цикле. Но я думаю, что мой ответ может удовлетворить ваше требование.
Он будет создавать новый выходной файл в каждом цикле.
**то есть: если у вас есть два файла с именами database1.db
и database2.db
в каталоге First10
, в первом цикле будет создан вывод testdatabase1.db.txt
и testdatabase2.db.txt
во втором цикле.
#!/bin/bash
cd First10
for filename in *; do
../binaries/jackhmmer --tblout "${filename}.log" -E1 --noali "$filename" largedatabase.fasta
done
cd $OLDPWD
Таким образом, вы будете иметь имя обработанного файла на имя файла журнала точка журнала, меняя свое имя для каждой итерации.