您好,我一直在使用 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 序列之前都有不同的前缀。
试试这个:
for dir in /path/to/sgdp_*; do
find "$dir" -type f -name '*_chr.bam'
done