Задать вопрос
wolverine777
@wolverine777

Как запустить в процесс два файла одновременно?

Привет, давеча мне помогли с пониманием того как проскриптить запуск всех файлов (модулем fastqc) что лежат в папке один за другим, предположим в папке /home/blabla/files/ лежат file1.fastq, file2.fastq, file3.fastq и т.д.

всего что есть в папке одно за другим - вот таким образом

for file in $(find /home/blabla/files/ -name '*.fastq')
do
        fastqc "$file" -o /home/blabla/FastQC_out
done


А как быть если мне нужно проскриптить ПАРНЫЙ запуск (не знаю, так говорят вообще?) файлов? Например

java -jar trimmomatic-0.39.jar PE -phred33 \ 
/home/blabla/files/file1.fastq /home/blabla/files/file2.fastq 
output-file1-FOR.fastq \
output-file1-REV.fastq \
output-file2-FOR.fastq \
output-file2-REV.fastq \
ILLUMINACLIP:TruSeq3-PE-2.fa:2:30:10 LEADING:5 TRAILING:5 SLIDINGWINDOW:4:5 MINLEN:36


java -jar trimmomatic-0.39.jar PE -phred33и
ILLUMINACLIP:TruSeq3-PE-2.fa:2:30:10 LEADING:5 TRAILING:5 SLIDINGWINDOW:4:5 MINLEN:36
- это проги с их аргументами, которыми, собственно, обрабатываются file1 и file2.

output-FOR и output-REV - это выходные файлы с результатом (по 2 на кажный входной файл)

Загвоздка лишь в том что они обязательно должны обрабатываться в паре.
  • Вопрос задан
  • 249 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 1
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
А если в папке будет лежать
file1
file3
file4
file5

или
file1
file10
file2
file3

У вас пары не поломаются?

Уточните требования к задаче - вам нужно просто выполнить команду с любыми двумя файлами, или эти файлы каким-то образом связаны и эту связь можно описать алгоритмом?

просто по два файла можно замутить через find | xargs
или в цикле сделать через условие отбор файлов

но вот гарантировать связь конкретных файлов - это уже другая задача
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
#~/bin/bash

pat='_([0-9]+)_A'
for file in $(find ./ -name '*.fastq')
do
        if [[ "${file}" =~ $pat ]]
        then
                java -jar trimmomatic-0.39.jar PE -phred33 \
                file_${BASH_REMATCH[1]}_A.fastq \
                file_${BASH_REMATCH[1]}_B.fastq \
                output-file_${BASH_REMATCH[1]}_A-FOR.fastq \
                output-file_${BASH_REMATCH[1]}_A-REV.fastq \
                output-file_${BASH_REMATCH[1]}_B-FOR.fastq \
                output-file_${BASH_REMATCH[1]}_B-REV.fastq \
                ILLUMINACLIP:TruSeq3-PE-2.fa:2:30:10 LEADING:5 TRAILING:5 SLIDINGWINDOW:4:5 MINLEN:36
        fi
done
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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