为命令行工具指定多个输入
我是bash的新手,我想在一个包含大量文件的文件夹上循环一个命令行程序。
脚本接受两个输入文件(在我的情况下,它们在文件名的一个字段中不同("…R1"vs"…R2")。运行该工具的单个实例如下所示:
tool_name infile1 infile2 -o outfile_suffix
实际示例:
casper sample_name_R1_001.out.fastq sample_name_R2_001.out.fastq -o sample_name_merged
文件名格式:
DCP-137-5102-T1A3_S33_L001_R1_001.fastq
DCP-137-5102-T1A3_S33_L001_R2_001.fastq
粗体字段将在不同的对(例如,2000、2110、5100等)之间变化,每对由R1或R2区分。
我想知道如何在包含大量匹配文件对的文件夹上循环脚本,并确保输出(-o)获得"sample_name"后缀。
我熟悉基本的for file in ./*.*; do ... $file...; done
,但这显然不适用于本例。如有任何建议,我们将不胜感激!
您想要在R1
的上循环,并从中派生R2
和合并的文件名,类似于:
for file1 in ./*R1*; do
file2=${file1/R1/R2}
merge=${file1#*R1}_merged
casper ${file1} ${file2} -o ${merge}
done
注意:Markdown将#*R1}_merged
显示为注释——它不是