我有一個包含檔案路徑串列的檔案。我正在用 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
uj5u.com熱心網友回復:
我想查看檔案已經存在的目錄,只下載未完成的檔案。
要獲得此類行為,您可以使用-nc(alias --no-clobber) 標志。它確實會跳過會下載到現有檔案的下載(覆寫它們)。所以在你的情況下
wget -nc -i cram_download_list.txt
請注意,此解決方案不處理部分下載的檔案。
uj5u.com熱心網友回復:
wget -c -i <(find -type f -name '*.cram' -printf '%f$\n' |\
grep -vf - cram_download_list.txt )
查找以 結尾的檔案cram并列印它們,后跟 a$和換行符。這用作下載串列的反向正則運算式匹配串列,即從下載串列中洗掉以現有檔案名結尾的任何行。
補充:
-c用于完成不完整的檔案(即恢復下載)
注意:不能很好地處理檔案名中的空格或換行符,但這些是ftp-URL,因此首先應該不是問題。
uj5u.com熱心網友回復:
如果您還想處理部分傳輸的檔案,則始終需要傳入wget能夠檢查長度的完整檔案名集。這意味著對于這種情況,唯一的方法是:
wget -c -i cram_download_list.txt
已經完成的檔案只會被檢查和跳過。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388693.html
上一篇:使用awk查找檔案的所需屬性
下一篇:期望腳本生成sftp中的EOF
