2012-06-14 64 views
0

我從來沒有在bash中編程過。 我正在讀取目錄中的所有文件,然後我需要查看它們的名稱並檢查是否有R1或R2,具體取決於我需要連接所有具有R1的文件以及所有具有R2的文件在名字裏。 因此,作爲最終的輸出,我想有這樣的事情:查看文件名並將它們連接在bash中

字符串1 = file1_R1.gz file2_R1.gz file3_R1.gz ...

字符串2 = file1_R2.gz file2_R2.gz file3_R2.gz。 ..

我該怎麼做?我至今唯一的代碼是:

#!/bin/bash 

list=$(echo *.gz) 

strR1="R1" 
strR2="R2" 

if [ "$list" = "*.gz" ] ; then list=""; fi 

for str in $list 
do 
    if echo "$strR1" | grep -q "$str"; then 
     echo "str"; 
else 
echo "no file"; 
fi 

done 

我可以讀取目錄中的所有文件,但是當我做,如果我不能找到與R1的任何文件,我知道至少有4個文件用R1命名。

謝謝!

回答

4

爲什麼寫一個循環做過濾通配符都已經爲你做什麼? (您使用的過濾*.gz已經同樣的事情。)

files1=`echo *R1*.gz` 
files2=`echo *R2*.gz` 

既然你說你想連接所有這些文件,這將被

zcat *R1.gz > result_R1 
zcat *R2.gz > result_R2 

或類似的東西。

相關問題