Выполнение команды с несколькими входами для многих файлов

Похоже, экранная команда "quit" возвращалась перед очисткой журнала. Добавление задержки между последней командой экрана и меткой даты должно дать экрану время для завершения записи в журнал. Другим вариантом может быть использование цикла «занято» для ожидания записи журнала в:

...
screen -S trans -X quit
while [ ! -s screenlog.0 ]
do
  sleep 1
done
date +%F~%H:%M:%S >> screenlog.0
...
0
03.07.2017, 00:27
2 ответа

Вы можете перебрать один из наборов входных файлов (например, файлы .faa) и сгенерировать другой входной файл и имена выходных файлов из тех:

for f in *.faa; do
    ./pal2nal.pl "$f" "${f%.faa}.fna" -codontable 11 -output paml > "${f%.faa}.paml"
done

Синтаксис ${f%word}удаляет самый короткий завершающий компонент, соответствующий word.

2
28.01.2020, 02:19

Команда

seq -w 0 6000

сгенерирует все числа от 0 до 6000; если число содержит менее четырех цифр, оно будет дополнено нулями слева. Вы можете использовать подстановку команд, чтобы заключить команду в цикл for:

for n in $(seq -w 0 6000) ;do
  ./pal2nal.pl abc$n.faa abc$n.fna -codontable 11 -output paml > abc$n.paml
done
2
28.01.2020, 02:19

Теги

Похожие вопросы