我有一个包含许多fq.gz文件的目录。我想循环文件名并连接具有相同部分ID的任何文件。例如,在目录中的1000个文件中,这六个文件需要连接成一个文件(因为它们从“L1”开始共享相同的ID)
141016-FC012-L1-N707-S504--123V_pre - HS - R1.fq.gz
141031-FC01229-L1-N707-S504--123V_pre - HS - R1.fq.gz
141020-FC01209-L1-N707-S504--123V_pre - HS - R1.fq.gz
141027-FC013-L1-N707-S504--123V_pre - HS - R1.fq.gz
141023-FC01219-L1-N707-S504--123V_pre - HS - R1.fq.gz
任何人都可以帮忙吗?
答案 0 :(得分:1)
可能不是最好的方式,但这可能会做你需要的:
while IFS= read -r -d '' id; do
cat *"$id" > "/some/location/${id%.fq.gz}_grouped.fq.gz"
done < <(printf '%s\0' *.fq.gz | cut -zd- -f3- | sort -uz)
这将创建具有以下格式的文件:
<ID>_grouped.fq.gz
L1-N707-S504--123V_pre--Hs--R1_grouped.fq.gz
...
...