使用多个输入对shell脚本的文件夹中的文件进行循环



为命令行工具指定多个输入

我是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显示为注释——它不是

相关内容

  • 没有找到相关文章

最新更新