2015-03-17 3 views
0

Задание нескольких входов для инструмента командной строки?Зацикливание файлов в папке для сценария оболочки с несколькими входами

Я новичок в 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-5102 137. -T1A3_S33_L001_R1_001.fastq
DCP-5102 137. -T1A3_S33_L001_R2_001.fastq

поле жирным шрифтом будет варьироваться между различными парами (например, 2000, 2110 , 5100 и т. Д.) С каждой парой, отличающейся либо R1, либо R2.

Я хотел бы знать, как заколить скрипт через папку, содержащую множество пар совпадающих файлов, а также убедиться, что на выходе (-o) появляется суффикс 'sample_name'.

Я знаком с базовым for file in ./*.*; do ... $file...; done, но это явно не сработает для этого примера. Мы ценим любые предложения!

+0

Имеет ли каждая пара R1 и R2? Можете ли вы привести несколько примеров пар имен файлов? – choroba

+0

Да, у одного члена пары будет R1, а у другого будет R2. Я обновил сообщение с более подробным описанием. –

ответ

2

Вы хотите петлю над R1-х и вывести R2 и слил-имена файлов из этого что-то вроде:

for file1 in ./*R1*; do 
    file2=${file1/R1/R2} 
    merge=${file1#*R1}_merged 
    casper ${file1} ${file2} -o ${merge} 
done 

Примечание: Markdown показывает на #*R1}_merged в качестве комментария - это не

+0

Спасибо! Это была большая помощь. Замечание: «$ {file1 # * R1} _merge« удаляет символы, предшествующие «R1» из пути к файлу (включая имя образца), а не символы хвоста. Но использование «$ {file1/R1 */_} слияния» решило эту проблему. –

+0

@ColinAnthony Нет проблем. Да, это должно было быть '$ {file1% R1 *} объединено', но рад, что вы его разрешили. –

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