1
2つの入力ファイルを必要とするコマンドでforループを使いたいとします。 2つのファイルの間に1文字の変更があります。ここでは、2つのサンプルファイルは、以下のとおりです。ここで2つの入力ファイルを持つループの場合
Fay2_TCCGGAGA-CCTATCCT_L001_R1_001.fastq
Fay2_TCCGGAGA-CCTATCCT_L001_R2_001.fastq
は、コマンドの私の試みです:
for f in /directory/*R1*.fastq
pref=${basename "$f" _*R1*.fastq}
command input1 $f input2 ${pref}_*R2*.fastq
ループがFILE2を見つけるために、FILE1の順列を使用していますので、問題は最も可能性の高いベース名を操作することにあります。ベースネームをファイル名全体よりも短くするにはどうしたらいいですか?私はループ以下のコメントに
Fay2_TCCGGAGA-CCTATCCT_L001_R2_001.fastq_*R2.fastq does not exist
おかげで正常に動作しているが、コマンドは、新しいファイルをループするたびに私のファイルが上書きされているエラーを取得しています。以下は私のコマンド全体です。両方の出力ファイルに名前を付ける必要があります。
for f1 in /directory/*R1*.fastq
f2="${f1/_R1_/_R2_}"
pref=${basename "$f" _*R1*.fastq}
command output1 ${pref}_trim_R1.fastq output2 ${pref}_trim_R2.fastq input1 $f input2 $f2
おかげで、これは素晴らしい作品。私は今、これらのファイルの命名に問題があります。 –
解決済み:$ f1に変更するだけです。ご協力ありがとうございました –