2013-02-20 3 views
0

У меня есть несколько пар файлов, которые отличаются только в одном номере:Как сортировать и использовать несколько файлов в сценарии bash?

121_S11_L001_R1_001

121_S11_L001_R2_001

и другая пара по отношению к другим файлам, отличаются в несколько номеров, но по отношению к своей паре, снова только в одном номере:

120_S10_L001_R1_001

120_S10_L001_R2_001

У меня есть Баш скрипт для обработки этих файлов по отдельности:

если [-s $ входной_файл] & & [! -s $ infile.bwa]; затем

echo "Creating BWA file..." 
time bwa aln $path"Genomeidx" $infile > $infile.bwa 
time bwa aln $path"Genomeidx" $infile2 > $infile2.bwa 

Где входной_файл 'и «infile2» являются файлы, указанных в командной строке

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

+1

Не уверен, что пара находится. Можете ли вы привести пример того, что вам нужно ввести? – cnicutar

+0

Каждое имя файла относительно его пары идентично, за исключением R1 и R2. Эти файлы являются парами. Я хочу обработать их вместе, как показано в куске сценария bash, затем другая пара аналогично. Это то, что вы имеете в виду, когда говорите «что вам нужно набирать»? – Vince

+0

Я имел в виду ссылку на ваш * Вместо того, чтобы вручную вводить каждую пару *, и мне понравился бы пример, так как я не понял те, которые вы разместили ранее. – cnicutar

ответ

2

Вы можете использовать bash globbing, чтобы выбрать все файлы стиля _R1_, а затем найти его пару.

Нечто подобное можно было бы адаптировать, чтобы сделать вашу обработку:

#!/bin/bash 

for file in *_R1_*; do 
    pair=${file/_R1_/_R2_} 
    if [ -f "$pair" ]; then 
     echo "processing $file and its pair $pair" 
    fi 
done 
+0

Это решение спаренной проблемы, но я пытался заставить ее работать рекурсивно во всех парных файлах. Кто-нибудь знает, как это сделать? – Vince

+0

Вы имеете в виду, что сценарий должен также спускаться в подкаталоги? –

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