他のファイルからこれらのコマンドを同時に実行するにはどうすればよいですか?

他のファイルからこれらのコマンドを同時に実行するにはどうすればよいですか?

A1からA16までの名前を持つ16の個々のフォルダがあり、各フォルダにaligned.sorted.bam

aligned.sorted.bamこのコマンドを使って次のように変換したいと思います。aligned.sam

module load samtools/1.3.2

samtools view -h -o aligned.sam aligned.sorted.bam

aligned.samそれからに変換counts.txt

module load htseq/0.6.1

htseq-count --stranded=no -q aligned.sam /local/software/DropSeq/STAR_Genomes/STAR_hg38_Genome/metadata/Homo_sapiens.GRCh38.dna.primary_assembly.gtf > counts.txt

各フォルダを繰り返してこれらのコマンドを段階的に実行できるスクリプトはありますか?私のLinuxはとても悪い

何か助けてくれてありがとう

@casでこのスクリプトを書くのを手伝ってください。

#!/bin/sh

find /temp/hgig/fi1d18/bin/TruSeq300719-139385266/FASTQ_Generation_2019-08-03_04_28_02Z-190932857/335T/ -type f -name aligned.sorted.bam -print0 | \
  xargs -0r -n 1 -P 8 /temp/hgig/fi1d18/bin/TruSeq300719-139385266/FASTQ_Generation_2019-08-03_04_28_02Z-190932857/script.sh


    cd "$(/temp/hgig/fi1d18/bin/TruSeq300719-139385266/FASTQ_Generation_2019-08-03_04_28_02Z-190932857/335T/ "$1")"

    module load samtools/1.3.2
    samtools view -h -o aligned1.sam "$1"

    module load htseq/0.6.1
    htseq-count --stranded=no -q aligned1.sam /local/software/DropSeq/STAR_Genomes/STAR_hg38_Genome/metadata/Homo_sapiens.GRCh38.dna.primary_assembly.gtf > counts.txt

次に、端末に次のように入力します。

chmod +x script.sh

しかし、何も起こりませんでした。

申し訳ありません。最近の変更でscript.shを実行可能にしてから、このコマンドを実行しました。

 [fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find 353T -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
    -bash:  xargs: command not found

[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T{}/ -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
-bash:  xargs: command not found
find: `T{}/': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T{} -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
-bash:  xargs: command not found
find: `T{}': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T -type f -name aligned.sorted.bam -print0 | \ xargs -0r -n 1 -P 8 script.sh
-bash:  xargs: command not found
find: `T': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$

    [fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ ls
    305N  305T  310N  310T  324T  327T  335T  337N  337T  338T  344T  346T  349T  353B  353N  353T  script.sh
    [fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$

私は〜をクリアしました\

[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find T -type f -name aligned.sorted.bam -print0 | xargs -0r -n 1 -P 8 script.sh
find: `T': No such file or directory
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ ls
305N  305T  310N  310T  324T  327T  335T  337N  337T  338T  344T  346T  349T  353B  353N  353T  script.sh
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$

@casの最新推薦に基づいています

[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$ find . -type f -name aligned.sorted.bam -print0 | xargs -0r -n 1 -P 8 script.sh
xargs: script.sh: Text file busy
xargs: script.shxargs: : Text file busyscript.sh
: Text file busy
xargs: script.sh: Text file busy
xargs: script.sh: Text file busy
xargs: script.shxargs: : Text file busyscript.sh
: Text file busy
[fi1d18@cyan01 FASTQ_Generation_2019-08-03_04_28_02Z-190932857]$

ベストアンサー1

大まかに推測すると、次のようなことが機能する可能性があります。

find ./A{1..16}/ -type f -name aligned.sorted.bam -print0 | 
  xargs -0r -n 1 -P 8 ./myscript.sh

これは複数のインスタンスを並列に実行しますmyscript.sh-P 8一度に8つ。CPUコア/スレッドの数が多いか少ない場合は調整します。私のスレッドリッパーでは-P 32.を使用するか、-P 0できるだけ多くのインスタンスを実行します)。各インスタンスにファイル名引数が与えられます。スクリプトの。

myscript.sh次のようになります。

#!/bin/sh

cd "$(dirname "$1")"

module load samtools/1.3.2
samtools view -h -o aligned.sam "$1"

module load htseq/0.6.1
htseq-count --stranded=no -q aligned.sam /local/software/DropSeq/STAR_Genomes/STAR_hg38_Genome/metadata/Homo_sapiens.GRCh38.dna.primary_assembly.gtf > counts.txt

このコマンドは渡さなければなりませんchmod +x myscript.sh。上記のコマンドは、xargsそのコマンドが現在のディレクトリにあると仮定しています。 PATHのどこかに置き(~/bin/自分のスクリプトに最適な場所、$ PATHに追加するだけで)、代わりに~/.bashrc実行できます。myscript.sh./myscript.sh

私はそれが何を意味するのかわからないmodule load ...ので、答えのこの部分が間違っている可能性があります。必要に応じて、スクリプトを変更できるように実行する項目を知っているとします。samtoolshtseq-count


myscript.shps:ファイルを書かない非常に簡単なテストをお勧めします。

たとえば、次のようになります。

#!/bin/sh

cd "$(dirname "$1")"

echo process-id $$ is in $(pwd), processing file "$1"

おすすめ記事