我正在组合ls
,xargs
并bash -c
在多个输入文件上运行特定程序(其名称与模式匹配barcode0[1-4].fastq
。
我调用的程序xargs
称为krocus,下面是我用来使用单个占位符调用该程序的代码(对于多个输入文件):
ls barcode0[1-4].fastq |cut -d '.' -f 1|xargs -I {} bash -c "krocus --verbose --output_file out_krocus/{}_Ecoli1.txt /nexusb/Gridion/MLST_krocus_DBs/e_coli1 {}.fastq
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我的占位符是我想在 ie 上调用 krocus 的文件barcode0[1-4].fastq
。我现在想添加第二个占位符,它将传递给--kmer
krocus 的参数。对于这个参数,我想传递数字seq 12 14
,即 12、13 和 14。在本例中,我想创建总共 12 个文件(这意味着我想组合四个--kmer
输入文件的三个值)
下面是我想象的带有参数占位符的代码的样子kmer
:
ls barcode0[1-4].fastq |cut -d '.' -f 1|xargs -I {} bash -c "krocus --verbose --output_file out_krocus/{placeholderForInputFile}_{placeholderForKmerSize}Ecoli1.txt /nexusb/Gridion/MLST_krocus_DBs/e_coli1 --kmer {placeholderForKmerSize} {placeholderForInputFile}.fastq
Run Code Online (Sandbox Code Playgroud)
问题是我需要通过管道传输两个命令的输出,即ls barcode0[1-4].fastq
和seq …
在我正在处理的目录中,我有两个扩展名为 的文件.sam
:
PD180425_aligned_minimap.sam
PD180793_aligned_minimap.sam
Run Code Online (Sandbox Code Playgroud)
对于这两个文件中的每一个,我都需要应用如下所示的命令:
samtools view -Sb pattern.sam > pattern.bam
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用xargs
它。我想要做的是在之前捕获前缀_aligned_minimap
并使用它来保存到我的输出。我尝试的是以下内容:
ls *.sam | cut -d "_" -f 1 | xargs -i samtools view -Sb {}_aligned_minimap.sam > {}_aligned_minimap.bam
Run Code Online (Sandbox Code Playgroud)
我希望必须生成 iePD180425_aligned_minimap.bam
和PD180793_aligned_minimap.bam
. 尽管我的命令正在运行,但我在我正在处理的目录中看到该文件{}_aligned_minimap.bam
已生成,这表明我尝试使用 xargs ( PD180425
and PD180793
)捕获的输入不起作用。
我该怎么做呢?