【发布时间】:2017-03-29 18:20:55
【问题描述】:
我希望对需要两个输入文件的命令使用 for 循环。两个文件之间只有一个字符更改。以下是两个示例文件:
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
问题很可能在于操作基本名称,因此循环使用 file1 的排列来查找 file2。如何使基本名称短于整个文件名。我收到错误
Fay2_TCCGGAGA-CCTATCCT_L001_R2_001.fastq_*R2.fastq does not exist
感谢 cmets 下面的循环工作正常,但是每当命令循环一个新文件时,我的文件就会被覆盖。以下是我的整个命令,需要命名两个输出文件。
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
【问题讨论】: