使用wget bash下载连续编号的文件,并选择在下载期间跳过某些文件



有一个主页,我可以下载编号从1到10000的zip文件。现在我正在用这个命令下载它们:

$ wget http://someaddress.com/somefolder/{001..10000}

我不需要所有的,但是在所需的zip文件的顺序中没有逻辑。当下载已经开始时,我只能看到它是否需要。不必要的文件比其他文件大得多,这会增加下载时间,所以如果我能跳过它们就太好了。在bash中有什么方法可以做到这一点吗?

您可以使用curl,它有一个选项--max-filesize,并且不会下载大于此的文件。然而,这取决于你的网站返回正确的大小与Content-Length头。您可以在文件上使用wget -S检查头文件看看他们是否提供。curl不做url模式,所以你必须为每个url写一个shell for循环。

或者,坚持使用wget,假设您没有Content-Length,您可以强制使用SIGPIPE当你接收到太多的数据时。例如

wget http://someaddress.com/somefolder/1234 -O - |
dd bs=1k count=2 >/tmp/1234

这将使wget将下载管道传输到dd命令中,该命令将进行复制通过数据到最终文件但在2块1024字节后停止。如果接收到的数据较少,则文件将包含所需的所有数据。如果接收到更多的数据,当wget写入更多数据时,dd将停止对于管道,它将被一个信号停止。

您需要为每个url编写一个循环。

最新更新