一次循环列表元素一

问题描述 投票:0回答:1

您好,我一直在使用 Singularity 尝试一个作业数组,问题是奇点只接受容器内的全局/环境变量的输入——至少据我所知。

所以,我的问题是我必须生成一个字符串,将其分配给一个变量,其中包含我的文件所在的路径,并且我必须这样做 279 次。我的第一次天真的尝试如下:

for i in {1..279};
do
        SAMPLE="ls /path/to/sgdp_$i/input/*_chr.bam"
done

当然,我从中得到的是

for
贯穿整个循环,直到第 279 次迭代,并且文件夹 sgdp_279 不包含我在第一个文件夹中查找的实际 BAM 文件,名为 sgdp_001,这是作业数组访问的第一个。

本质上,我需要的是一个迭代器,它可以生成前一个路径以及数组,或者一次仅迭代一次,而无需一次性运行整个循环。我希望我清楚地解释了这个问题,如果您需要更多详细信息,我可以分享整个代码。我尝试了其他几种选择,但没有成功......提前感谢您的帮助!

编辑-回答@jhnc

好点,这是我的

sgdp
目录的tree -h

sgdp_001
├── [ 4.0K]  input
│   ├── [  83G]  abh100_chr.bam
│   └── [ 8.5M]  abh100_chr.bam.bai
├── [ 4.0K]  output
├── [  83G]  sample_chr.bam
└── [ 8.5M]  sample_chr.bam.bai
sgdp_002
├── [ 4.0K]  input
│   ├── [  79G]  abh107_chr.bam
│   └── [ 8.5M]  abh107_chr.bam.bai
├── [ 4.0K]  output
├── [  79G]  sample_chr.bam
└── [ 8.5M]  sample_chr.bam.bai
.
.
.

前两种情况的期望输出应该是

/path/to/sgdp_001/input/abh100_chr.bam
/path/to/sgdp_002/input/abh107_chr.bam

需要注意的是,BAM 文件在 _chr.bam 序列之前都有不同的前缀。

bash loops variables singularity-container
1个回答
0
投票

试试这个:

for dir in /path/to/sgdp_*; do
    find "$dir" -type f -name '*_chr.bam'
done
© www.soinside.com 2019 - 2024. All rights reserved.