0

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

我是 bash 新手,我想在包含大量文件的文件夹上循环命令行程序。

该脚本采用两个输入文件(在我的情况下,它们在文件名的一个字段中有所不同(“... R1 ”与“... 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,但这显然不适用于这个例子。任何建议,将不胜感激!

4

1 回答 1

2

您想遍历R1's 并从中派生R2合并文件名,例如:

for file1 in ./*R1*; do
    file2=${file1/R1/R2}
    merge=${file1#*R1}_merged
    casper ${file1} ${file2} -o ${merge}
done

注意:Markdown 将 显示#*R1}_merged为评论 - 它不是

于 2015-03-17T15:18:11.787 回答