2016-04-12 7 views
2

BASH komut dosyası için oldukça yeni ve biraz yardıma ihtiyacım var.Birden çok dosyayı dosya gruplarına birleştirmek

312 dosyayı üzerinde çalışmak için oldukça kötü dosya adlarına sahip 39 dosya grubuna birleştirmeye çalışıyorum.

C9F4BANXX-1959-01-21-01_L003_R1.fastq

C9F4BANXX-1959-01-21-01_L004_R1.fastq

C9F4BANXX-1959-: Bir grup için dosyaların serisi benziyor 01-21-01_L005_R1.fastq

C9F4BANXX-1959-01-21-01_L006_R1.fastq

çok aksak eminim (aşağıdaki kullandığım bu grubu bitiştirmek için - ama o) çalışır:

cat *-01-*_*_R1.fastq > 01_R1.fastq 

dosyaları

C9F4BANXX-1959- -21-01_L003_R1.fastq

C9F4BANXX yani) kalın olarak (isim 3 dizesinde farklılık -1959- -21-01_L003_R1.fastq

benim hea almak için mücadele ediyorum konumuna bağlı 4 dosyaların her grup için birleştirme yineleme için bir döngü nasıl ayarlanacağı etrafında d dosya adında yardım için

Teşekkür belirtilen

+0

Kedileri ve joker karakterleri kullanmak hiç dezavantajlı değildir, aslında muhtemelen bunu yapmak için en verimli (mantıklı) yoldur. – 123

cevap

0

i soruyu anlamak doğru sizin için bir kullanabilirsiniz döngü.

Numaraları kaydırmak için bir alt kabukta seq'yi kullanabilirsiniz.

for i in $(seq -f "%02g" 1 39);do cat *-"$i"-*_*_R1.fastq > "$i"_R1.fastq ;done 
+0

Bunun için çok teşekkürler - 'for' döngüsünün çeşitli bitlerini sadece dizenin orta kısmında çalışmak üzere bir araya getirmek için uğraşıyordum. –

+0

Sadece seq komutu ve kullandığınız biçim hakkında daha fazla bilgi edinin - çok iyi! Tekrar teşekkürler - bu benim sahip olduğum diğer işler için kullanabileceğiniz harika bir araçtır –