从具有许多链接的网站下载文件

从具有许多链接的网站下载文件

我正在尝试从以下位置下载文件https://www.ebi.ac.uk/ena/data/view/PRJEB5736我想为所有示例递归下载 file1 和 file2 (仅 FTP fastq)文件。请告诉我如何在linux下做到这一点。

谢谢

答案1

如果所有链接都像看起来一样规则,您可以尝试以下操作:

results=147
for ((i=0; i<147; i++)); do
    base=ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/
    ext=$((445410+i))
    suff=.fastq.gz
    for j in 1 2; do wget "${base}${ext}/${ext}/_${j}${suff}"; done
done

据我所知,此下载中没有任何递归内容。链接地址检查给出了一些提示:

ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445410/ERR445410_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445410/ERR445410_2.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445411/ERR445411_1.fastq.gz
ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR445/ERR445411/ERR445411_2.fastq.gz

所以它们之间应该只有三个部分发生变化:

ERR<nr>/ERR<nr>_<1 or 2>

步长为ERR1,结果计数为 147,这就是一个完整的答案(假设这就是这个故事的全部内容)。因此,完成所有下载后,计算新文件数并确保有 2 * 147 个文件。

下载过程当然可以优化。如上所述,wget每个链接都会启动一个进程。我将把优化留给你,这里只介绍分析和基本解决方案。

相关内容