我正在尝试使用 wget 下载所有以 .tar.gz 结尾的 Betacoronavirus 文件https://ftp.ncbi.nlm.nih.gov/blast/db/。我可以使用 wget 并将链接粘贴到其中一个文件,它会很好地下载该文件。但是当我尝试使用某种正则表达式(例如带有 Betacoronavirus.*.tar.gz 的东西)来为我一次下载它们时,它不起作用。我已经尝试了在其他线程上看到的多种方法,但仍然没有任何效果。
答案1
使用专为传输文件而不是文本而设计的协议。在这种情况下,主机名“ftp”表明您也可以通过 FTP 访问资源。 wget 可以通过 FTP 进行全局操作:
wget 'ftp://ftp.ncbi.nlm.nih.gov:21/blast/db/Betacoronavirus.*.tar.gz'
答案2
Betacoronavirus.*.tar.gz
当您在 wget 命令行上使用“regex”或“glob”时,它正在您的本地计算机上执行在您当前的工作目录中。
wget Betacoronavirus.*.tar.gz
在该目录中,可能没有这样的文件,并且“glob”为空;或者,目录可能包含一些已下载的文件,然后“glob”可能会匹配该文件并尝试下载相同的文件。
不管怎样,这都是行不通的。
你需要的是一个glob远程 ftp 机器. 你可以使用一个 cli ftp 客户端。
你最好的方法(简单的方法)是使用gui ftp 客户端并选择匹配的文件并单击下载。我建议WinSCP 和 FileZilla。
高级方法是下载目录列表的 html 源,解析它并取出匹配的文件,并对每个匹配的文件执行 wget。考虑到您的用例,我不建议这样做。