使用正则匹配目录与文件名,wget下载指定文件遇问题求助
你的wget命令出错的原因与修复方案
让我帮你拆解下这个命令里的问题:
FTP软链接的坑:FlyBase的
releases/current是服务器上的一个符号链接(类似Windows的快捷方式),它直接指向当前最新的版本目录(也就是你要的dmel_r6.21)。但wget默认不会自动解析FTP上的这类软链接,所以你在current后面加dmel_r*完全是多余的——因为current本身就是dmel_r6.21的别名,它下面根本没有以dmel_r开头的子目录。通配符位置放错了:你要的文件实际路径是
releases/current/fasta/dmel-all-translation-r6.21.fasta.gz(因为current指向dmel_r6.21),但你的命令把dmel_r*放在了current之后,这会让wget去寻找current/dmel_r*这个不存在的目录,肯定找不到目标文件。
正确的命令写法
如果想保留通配符适配未来版本更新,可以这样写:
wget ftp://ftp.flybase.net/releases/current/fasta/dmel-all-translation-r*.fasta.gz
要是你想精准指定当前版本,直接用完整路径更稳妥:
wget ftp://ftp.flybase.net/releases/current/fasta/dmel-all-translation-r6.21.fasta.gz
额外小技巧:如果wget对FTP通配符的解析不太顺畅,还可以用--accept参数来过滤文件名:
wget --accept="dmel-all-translation-r*.fasta.gz" ftp://ftp.flybase.net/releases/current/fasta/
内容的提问来源于stack exchange,提问作者Wasim Aftab
相关产品推荐
相关产品推荐

