Relative Unix-Neuling. Ich habe eine Reihe von Verzeichnissen (Sample*/
), innerhalb derer ich alle raw.sort.bam-Dateien unter Verwendung von Sammeldateien zusammenführen möchte. Ich habe funktionierenden Code, um dies in jedem Verzeichnis zu tun, aber ich möchte mit allen Verzeichnissen gleichzeitig umgehen, indem ich Code aus dem übergeordneten Verzeichnis ausführen. Mein Problem ist, dass ich dazu gezwungen bin, Sammeldaten mit einem vollständigen Pfad aufzurufen, und ich habe Probleme herauszufinden, wie dieser Pfad innerhalb einer Unix-Schleife funktioniert.Umgang mit Pfaden in Unix-Schleifen
Zuerst, hier ist mein Arbeits Code für die Zusammenführung und Umwandlung von in jedem Verzeichnis:
/home/user/pathtosamtools/sam merge -o all.sort.bam *raw.sort.bam
Nun, meint nicht arbeit Code versucht, dies für alle Verzeichnisse zu tun, wenn aus dem übergeordneten Verzeichnis ausgeführt:
for f in `ls Sample*/`; do /home/user/pathtosamtools/sam merge -o $f all.sort.bam Sample*/*raw.sort.bam; done
Fehler:
[bam_merge_core_ext] fail to open file all.sort.bam
[bam_header_read] bgzf_check_EOF: Invalid argument
[bam_header_read] invalid BAM binary header (this is not a BAM file).
Segmentation fault
Vielen Dank im Voraus.
Das funktioniert, tausend Dank! Danke auch für einige Best-Practice-Tipps. Viel zu lernen. – user6130897