在多个配对文件上执行命令

时间:2014-10-29 15:48:58

标签: bash unix fastq

假设我有一个命令command.py,它将文件File_01_R1.fastqFile_01_R2.fastq组合在一起。在一对上执行的命令如下所示:

command.py -f File_01_R1.fastq -r File_01_R2.fastq

但我有很多文件,每个文件都有R1和R2版本。如何告诉此命令遍历我拥有的每个文件,因此它也会执行

command.py -f File_02_R1.fastq -r File_02_R2.fastq
command.py -f File_03_R1.fastq -r File_03_R2.fastq

等等。

2 个答案:

答案 0 :(得分:2)

您可以使用简单的parameter expansion

for f in *_R1.fastq; do
    echo command.py -f "$f" -r "${f%_R1.fastq}_R2.fastq"
done

这将打印出要执行的内容。如果您对结果感到满意,请移除echo

答案 1 :(得分:2)

# Loop over all R1.fastq files
for f in File_*_R1.fastq; do
    # Replace R1 with R2 in the filename and run the command on both files.
    command.py -f "$f" -r "${f/_R1./_R2.}"
done; unset -v f

正如@gniourf_gniourf在他的评论中指出的那样,我的答案比他的答案稍微安全一点,因为它可能在文件名中的不正确位置匹配(而他的结尾处是锚定的)。