相対的なUNIX初心者。いくつかのディレクトリ ( Sample*/
) があり、samtools を使用してすべての raw.sort.bam ファイルをマージしたいと考えています。各ディレクトリ内でこれを行う作業コードがありますが、親ディレクトリからコードを実行して、すべてのディレクトリを一度に処理したいと考えています。私の問題は、フル パスで samtools を呼び出さなければならないことであり、このパスが UNIX ループ内でどのように機能するかを理解するのに苦労しています。
まず、各ディレクトリ内からマージおよび変換するための作業コードを次に示します。
/home/user/pathtosamtools/sam merge -o all.sort.bam *raw.sort.bam
さて、親ディレクトリから実行すると、すべてのディレクトリに対してこれを実行しようとする私の非動作コード:
for f in `ls Sample*/`; do /home/user/pathtosamtools/sam merge -o $f all.sort.bam Sample*/*raw.sort.bam; done
エラー:
[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
前もって感謝します。