Зацикливание файлов в папке для сценария оболочки с несколькими входами
Задание нескольких входов для инструмента командной строки?
Я новичок в bash и хочу зациклить программу командной строки над папкой, содержащей множество файлов.
Сценарий принимает два входных файла (в моем случае они отличаются в одном поле имени файла ("...R1" против "...R2"). Запуск одного экземпляра инструмента выглядит следующим образом:
tool_name infile1 infile2 -o outfile_suffix
Актуальный пример:
casper sample_name_R1_001.out.fastq sample_name_R2_001.out.fastq -o sample_name_merged
Формат имени файла:
DCP-137-5102-T1A3_S33_L001_R1_001.fastq
DCP-137-5102-T1A3_S33_L001_R2_001.fastq
Поле, выделенное полужирным шрифтом, будет варьироваться между различными парами (например, 2000, 2110, 5100 и т. Д.), Причем каждая пара будет выделена либо R1, либо R2.
Я хотел бы знать, как зациклить сценарий над папкой, содержащей множество пар сопоставляемых файлов, а также убедиться, что вывод (-o) получает суффикс "sample_name".
Я знаком с основными for file in ./*.*; do ... $file...; done
но это явно не сработает для этого примера. Мы ценим любые предложения!
1 ответ
Вы хотите перебрать R1
и выводить R2
и имена слитых файлов из этого, что-то вроде:
for file1 in ./*R1*; do
file2=${file1/R1/R2}
merge=${file1#*R1}_merged
casper ${file1} ${file2} -o ${merge}
done
Примечание: уценка показывает #*R1}_merged
как комментарий - это не