让 wget 只下载列表中的新项目
Get wget to download only new items from a list
我有一个包含文件路径列表的文件。我正在用 wget 像这样下载它们:
wget -i cram_download_list.txt
但是列表很长,我的会话被打断了。我想查看已经存在文件的目录,只下载未完成的文件。
我一直在尝试想出一个涉及 comm 的选项,但无法弄清楚如何使用 wget 循环它。
文件内容如下所示:
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239280/NA07037.final.cram
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239286/NA11829.final.cram
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239293/NA11918.final.cram
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239298/NA11994.final.cram
我目前正在尝试做这样的事情:
ls *.cram | sed 's/^/ftp:\/\/ftp.sra.ebi.ac.uk\/vol1\/run\/ERR323\/ERR3239480\//' > downloaded.txt
comm -3 <(sort cram_download_list.txt) <(sort downloaded.txt) | tr -d " \t" > to_download.txt
wget -i to_download_final.txt
wget -c -i <(find -type f -name '*.cram' -printf '%f$\n' |\
grep -vf - cram_download_list.txt )
查找以 cram
结尾的文件并打印它们后跟 $
和一个换行符。这用于下载列表的反向正则表达式匹配列表,即从下载列表中删除以现有文件名结尾的任何行。
添加:
-c
用于完成不完整的文件(即恢复下载)
注意:不能很好地处理文件名中的空格或换行符,但这些是 ftp
-URL,因此首先应该不是问题。
如果您还想处理部分传输的文件,您总是需要传入完整的文件名集,wget
可以检查长度。这意味着对于这种情况,唯一的方法是:
wget -c -i cram_download_list.txt
已经完成的文件只会被检查并跳过。
I’d like to look at the directory for which files already exist, and
only download the outstanding ones.
要获得此类行为,您可以使用 -nc
(别名 --no-clobber
)标志。它确实会跳过会下载到现有文件(覆盖它们)的下载。所以在你的情况下
wget -nc -i cram_download_list.txt
请注意,此解决方案无法处理部分下载的文件。
我有一个包含文件路径列表的文件。我正在用 wget 像这样下载它们:
wget -i cram_download_list.txt
但是列表很长,我的会话被打断了。我想查看已经存在文件的目录,只下载未完成的文件。
我一直在尝试想出一个涉及 comm 的选项,但无法弄清楚如何使用 wget 循环它。
文件内容如下所示:
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239280/NA07037.final.cram
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239286/NA11829.final.cram
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239293/NA11918.final.cram
ftp://ftp.sra.ebi.ac.uk/vol1/run/ERR323/ERR3239298/NA11994.final.cram
我目前正在尝试做这样的事情:
ls *.cram | sed 's/^/ftp:\/\/ftp.sra.ebi.ac.uk\/vol1\/run\/ERR323\/ERR3239480\//' > downloaded.txt
comm -3 <(sort cram_download_list.txt) <(sort downloaded.txt) | tr -d " \t" > to_download.txt
wget -i to_download_final.txt
wget -c -i <(find -type f -name '*.cram' -printf '%f$\n' |\
grep -vf - cram_download_list.txt )
查找以 cram
结尾的文件并打印它们后跟 $
和一个换行符。这用于下载列表的反向正则表达式匹配列表,即从下载列表中删除以现有文件名结尾的任何行。
添加:
-c
用于完成不完整的文件(即恢复下载)
注意:不能很好地处理文件名中的空格或换行符,但这些是 ftp
-URL,因此首先应该不是问题。
如果您还想处理部分传输的文件,您总是需要传入完整的文件名集,wget
可以检查长度。这意味着对于这种情况,唯一的方法是:
wget -c -i cram_download_list.txt
已经完成的文件只会被检查并跳过。
I’d like to look at the directory for which files already exist, and only download the outstanding ones.
要获得此类行为,您可以使用 -nc
(别名 --no-clobber
)标志。它确实会跳过会下载到现有文件(覆盖它们)的下载。所以在你的情况下
wget -nc -i cram_download_list.txt
请注意,此解决方案无法处理部分下载的文件。