2013-02-20 67 views
0

我有多個文件對不同之處僅在一個數字:如何在bash腳本中排序和使用多個文件?

121_S11_L001_R1_001

121_S11_L001_R2_001

且相對於其它文件的另一個對,多個號碼有所不同,但是相對於它的對,只是再次在一個編號:

120_S10_L001_R1_001

120_S10_L001_R2_001

我有一個bash腳本單獨處理這些文件:

如果[-s $ INFILE] & & [! -s $ infile.bwa];又在哪裏「的infile」和「infile2」在命令行

不用手動輸入每一對,我怎麼遞歸選擇和處理每對每個文件上指定的文件

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

+1

不知道一對是什麼。你能舉一個你需要輸入的例子嗎? – cnicutar 2013-02-20 04:44:24

+0

除R1和R2以外,每個文件名相對於其對都是相同的。這些文件是成對的。我想像在bash腳本塊中顯示的那樣一起處理它們,然後,另一個類似地處理它們。 這就是你說'你需要輸入'的意思嗎? – Vince 2013-02-20 04:50:34

+0

我的意思是作爲你的*的參考,而不是手動輸入每一對*,並會喜歡一個例子,因爲我不明白你之前發佈的那些。 – cnicutar 2013-02-20 04:58:08

回答

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 2013-02-20 07:27:40

+0

您的意思是腳本也應該下載到子目錄中嗎? – 2013-02-20 09:38:11

相關問題