假设我有一个命令command.py,它将文件File_01_R1.fastq
与File_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
等等。
答案 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在他的评论中指出的那样,我的答案比他的答案稍微安全一点,因为它可能在文件名中的不正确位置匹配(而他的结尾处是锚定的)。