我有两个名字的文件夹(SRP1234,SRP2345)。每个文件夹都有两个子文件夹(SRX1,SRX2用于SRP1234和SRX3,SRX4用于SRP2345)。每个子文件夹还有4个子文件夹(用于SRX1的SRR1,SRR2,SRR3,SRR4等)每个SRR floder都有一个文件(扩展名为.sra),我必须分析它并将结果放在SRR子文件夹中。 但是我无法将结果文件放在SRR子目录中。
以下是我编写的示例代码。
#!/bin/bash
DATA=/home/data/SRA_Data
for run in $DATA/SRP*
do
fastq-dump -I --split-files ${run}/SRX*/SRR*.sra --outdir $run/SRX*/SRR*
done
EDITED
我不确定我明白你拥有什么,但我认为它是这样的:
|-SRP1234
|---SRX1
|-----SRR1
|-------file.sra
|-----SRR2
|-------file.sra
|-----SRR3
|-------file.sra
|-----SRR4
|-------file.sra
|---SRX2
|-SRP2345
|---SRX3
|---SRX4
目前还不清楚(对我来说)SRX2中的内容
答案 0 :(得分:0)
使用*通配符输入和输出args可能不是你想要的。简化一下,如果你有三个子目录foo [123],每个子目录包含一个.sra文件,那么shell扩展就可以这样工作:
fastq-dump --split-files foo*/*.sra --outdir foo*
fastq-dump --split-files foo1/a.sra foo2/b.sra foo3/c.sra --outdir foo1 foo2 foo3
我假设命令对三个输出目录没有任何用处,你真正想要的是:
fastq-dump --split-files foo1/a.sra --outdir foo1
fastq-dump --split-files foo2/b.sra --outdir foo2
fastq-dump --split-files foo3/c.sra --outdir foo3
这是对的吗?
如果是这样,你的循环应该更精细,可能是这样的:
#!/bin/bash
DATA=/home/data/SRA_Data
for directory in $DATA/SRP*/SRX*/SRR*
do
fastq-dump -I --split-files "${directory}"/*.sra --outdir "${directory}"/
done
如果您确实希望来自多个SRR目录的文件成为每个fastq-dump运行的输入,那么您需要描述要将输出放入哪个目录(目录?)。