为命令行工具指定多个输入?
我是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
但显然不适用于此示例。任何建议将不胜感激!
答案 0 :(得分:2)
您希望循环遍历R1
并从中派生R2
和合并文件名,例如:
for file1 in ./*R1*; do
file2=${file1/R1/R2}
merge=${file1#*R1}_merged
casper ${file1} ${file2} -o ${merge}
done
注意:Markdown会将#*R1}_merged
显示为评论 - 它不是