首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在shell脚本中为命令指定多个输入

如何在shell脚本中为命令指定多个输入
EN

Unix & Linux用户
提问于 2023-04-14 18:37:44
回答 2查看 91关注 0票数 2

我每个样本都有几个fastq文件,所有这些文件都应该同时作为输入提供(因为它们都属于一个样本,所以它们不应该被独立地对待,就像在一个for循环中一样,因为它们是一个样本的输入,所以应该一起处理)。

当s1示例只有三个fastq文件时,这是一个简单的示例:

代码语言:javascript
复制
NanoPlot -t 2 --fastq s1.reads1.fastq.gz s1.reads2.fastq.gz s1.reads3.fastq.g --maxlength 40000 --plots hex dot

现在假设我有超过100个用于s1的fastq文件,我如何修改命令以将它们全部作为输入?

EN

回答 2

Unix & Linux用户

发布于 2023-04-14 20:45:13

因此,我的建议是向NanoPlot提供一个文件名作为参数,其中包含FASTQ文件列表,并相应地在程序中处理该列表。

代码语言:javascript
复制
NanoPlot -t 2 --fastq fastq_files.list --maxlength 40000 --plots hex dot

fastq_files.list的内容如下:

代码语言:javascript
复制
s1.reads1.fastq.gz
s1.reads2.fastq.gz 
s1.reads3.fastq.gz
...etc
票数 2
EN

Unix & Linux用户

发布于 2023-04-15 13:54:32

如果这适用于NanoPlot

代码语言:javascript
复制
NanoPlot -t 2 --fastq s1.reads1.fastq.gz s1.reads2.fastq.gz s1.reads3.fastq.gz --maxlength 40000 --plots hex dot

并且您希望传递所有文件名,从s1.开始,以.fastq.gz结尾,那么简单的shell glob也可以这样做:

代码语言:javascript
复制
NanoPlot -t 2 --fastq s1.*.fastq.gz --maxlength 40000 --plots hex dot

shell应该按照通常的字典顺序对文件名进行排序,因此数字排序为1 < 10 < 11 < 2等等,因此如果这一点重要的话,请小心。

如果希望程序看到包含来自所有此类文件的数据的单个文件,则可以使用cat进行进程替换(在Bash/ksh/zsh中):

代码语言:javascript
复制
NanoPlot -t 2 --fastq <(cat s1.*.fastq.gz) --maxlength 40000 --plots hex dot
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/742926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档