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

时间:2015-09-09 08:31:06

标签: bash download wget

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

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

我并不需要所有这些,但是所需的zip文件顺序没有逻辑。我只能看到下载已经开始时是否需要。不必要的文件大小比其他文件大得多,并且增加了下载时间,所以如果我能以某种方式跳过它们会很棒。 bash中有没有方法可以做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用具有curl选项的--max-filesize,并且不会下载大于此值的文件。但是,这取决于您的网站使用Content-Length标头返回正确的大小。您可以在文件中使用wget -S检查标头 看他们是否提供。 curl没有网址格式,因此您必须为每个网址编写一个shell for循环。

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

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

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

您需要为每个网址编写一个循环来执行此操作。