シェルスクリプトで1つのコマンドに複数の入力を指定する方法

シェルスクリプトで1つのコマンドに複数の入力を指定する方法

サンプルごとに複数のfastqファイルがあり、すべて一度に入力として提供する必要があります。 (すべて1つのサンプルに属するため、forループのように独立して処理しないでください。1つのサンプルに入力されるため、一緒にする必要があります。)。

これは簡単な例です。 s1サンプルには3つのfastqファイルしかありません。

NanoPlot -t 2 --fastq s1.reads1.fastq.gz s1.reads2.fastq.gz s1.reads3.fastq.g --maxlength 40000 --plots hex dot

ここで、s1に100を超えるfastqファイルがあるとします。このファイルをすべて入力として使用するようにコマンドを変更するにはどうすればよいですか?

答え1

NanoPlotしたがって、私の提案は、FASTQファイルのリストを含むパラメータとしてファイル名を指定し、プログラムがそれに応じてリストを処理することです。

NanoPlot -t 2 --fastq fastq_files.list --maxlength 40000 --plots hex dot

内容はfastq_files.list次のとおりです。

s1.reads1.fastq.gz
s1.reads2.fastq.gz 
s1.reads3.fastq.gz
...etc

答え2

これが次に適用される場合NanoPlot

NanoPlot -t 2 --fastq s1.reads1.fastq.gz s1.reads2.fastq.gz s1.reads3.fastq.gz --maxlength 40000 --plots hex dot

で始まり終わるs1.すべてのファイル名を渡したい.fastq.gz場合は、単純なシェルglobもトリックを実行する必要があります。

NanoPlot -t 2 --fastq s1.*.fastq.gz --maxlength 40000 --plots hex dot

シェルは一般的な辞書順にファイル名をソートするため、数字は<<<などで1ソートされます。これが重要な場合は注意してください。10112

番組を見たいなら一つファイルにこれらのすべてのファイルのデータが含まれている場合は、Bash / ksh / zshでプロセスオーバーライドを使用してcatこれを実行できます。

NanoPlot -t 2 --fastq <(cat s1.*.fastq.gz) --maxlength 40000 --plots hex dot

関連情報