我想先使用cat
将具有下一个下划线的相似ID的文件合并为一个文件。如何为多个文件执行以下操作?
想到了这样的东西:
for f in *.R1.fastq.gz; do cat "$f" > "${f%}.fastq.gz"; done
在
9989_L004_R1.fastq.gz
9989_L005_R1.fastq.gz
9989_L009_R1.fastq.gz
9873_L008_R1.fastq.gz
9873_L005_R1.fastq.gz
9873_L001_R1.fastq.gz
出
9989.fastq.gz
9873.fastq.gz
答案 0 :(得分:2)
for f in *_R1.fastq.gz; do cat "$f" >> "${f%%_*}.fastq.gz"; done
>>
用于添加,${f%%_*}
删除匹配$f
的{{1}}中最长的后缀。答案 1 :(得分:1)
这是另一种方式:
for f in *_R1.fast1.gz; do
[[ -f "${f%%_*}.fastq.gz" ]] || cat ${f%%_*}_*_R1.fast1.gz > "${f%%_*}.fastq.gz"
done
或者如果您想使其更具可读性:
for f in *_R1.fast1.gz; do
key="${f%%_*}"
[[ -f "${key}.fastq.gz" ]] || cat ${key}_*_R1.fast1.gz > "${key}.fastq.gz"
done