0

私はこれまでbashでプログラムしたことがありません。ディレクトリにあるすべてのファイルを読んでいるので、それらの名前を調べて、R1またはR2があるかどうかを確認する必要があります。それに応じて、同じR1を持つすべてのファイルと、R2を持つすべてのファイルを連結する必要があります。名前。したがって、最終的な出力として、次のようなものが必要です。

文字列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を含むファイルが見つからない場合は、名前にR1が含まれるファイルが少なくとも4つあることがわかります。

ありがとうございました!

4

1 に答える 1

4

なぜ、ワイルドカードのフィルタリングを実行するためのループを作成するのですか?(すでに同じものを使用してフィルタリングし*.gzています。)

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

これらすべてのファイルを連結したいと言ったので、それは次のようになります

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

またはそのようなもの。

于 2012-06-14T11:32:46.153 に答える