이 질문이 이전에 요청되었다면 죄송합니다. 나는 이 모든 것에 대해 매우 새로운 것입니다.
R1
특정 파일 이름 위치를 포함하는 다른 폴더의 모든 파일을 연결하고 싶습니다 . 일부 파일 이름이 다르기 때문에 지금까지의 시도가 작동하지 않습니다.S번호.
폴더 1
952_56890_S91_combined_L001_R1_001.fastq.gz 952_56890_S91_combined_L001_R2_001.fastq.gz 952_53929_S92_combined_L001_R1_001.fastq.gz 952_53929_S92_combined_L001_R2_001.fastq.gz
폴더 2
952_56890_S125_combined_L001_R1_001.fastq.gz 952_56890_S125_combined_L001_R2_001.fastq.gz 952_53929_S126_combined_L001_R1_001.fastq.gz 952_53929_S126_combined_L001_R2_001.fastq.gz
답변1
$ cat 952_53929_S*R1._001.fastq.gz >> 파일 이름
답변2
예시 이름이 몇 개만 있는 경우 수동으로 이 작업을 수행할 수 있습니다.
cat folder*/952_53929_S*_R1_*.fastq.gz > 952_53929_combined_L001_R1_001.fastq.gz
cat folder*/952_53929_S*_R2_*.fastq.gz > 952_53929_combined_L001_R2_001.fastq.gz
cat folder*/952_56890_S*_R1_*.fastq.gz > 952_56890_combined_L001_R1_001.fastq.gz
cat folder*/952_56890_S*_R2_*.fastq.gz > 952_56890_combined_L001_R2_001.fastq.gz
더 많으면 별로 실용적이지 않습니다. 따라서 이름을 직접 수집할 수 있습니다.
$ for f in */952_*.fastq.gz; do fname=$(basename "$f"); echo ${fname%%_S*} ; done | sort | uniq
952_53929
952_56890
그러면 다음과 같은 작업을 수행할 수 있는 접두사가 제공됩니다.
for f in */952_*.fastq.gz; do
fname=$(basename "$f");
echo ${fname%%_S*} ;
done |
sort |
uniq |
while read prefix; do
cat */"$prefix"*_R1_*.fastq.gz > "$prefix"_combined_L001_R1_001.fastq.gz;
cat */"$prefix"*_R2_*.fastq.gz > "$prefix"_combined_L001_R2_001.fastq.gz;
done