Сначала соберите уникальные идентификаторы в ассоциативном массиве:
declare -A ids
for f in *.fastq.gz; do
ids[${f%%_*}]=1
done
Затем используйте gzcat
для передачи (несжатого) содержимого каждого соответствующего файла в gzip
, чтобы повторно сжать выходные данные в одинфайл.
for id in "${!ids[@]}"; do
gzcat "$id"_*.fastq.gz | gzip -c > "$id".fastq.gz
done
(или, поскольку я забыл, что сцепленные файлы Gzip сами по себе являются действительными файлами Gzip,
for id in "${!ids[@]}"; do
cat "$id"_*.fastq.gz > "$id".fastq.gz
done
)