这是运行wget最简单的例子:

wget http://www.example.com/images/misc/pic.png

但是如何使wget跳过下载if pic。已经有Pngis了?


试试下面的参数:

-nc,——no-clobber:跳过将下载到的下载 现有的文件。

示例用法:

wget -nc http://example.com/pic.png

当使用-r或-p运行Wget,但不带-N、-nd或-nc时,重新下载文件将导致新副本简单地覆盖旧副本。

因此,添加-nc将防止这种行为,而是导致原始版本被保留,服务器上的任何较新的副本被忽略。

在GNU上查看更多信息。

-nc,——no-clobber选项不是最好的解决方案,因为新文件将不会被下载。应该使用-N来代替,它只会在服务器有更新的版本时下载并覆盖文件,所以正确的答案是:

wget -N http://www.example.com/images/misc/pic.png

然后使用-N运行Wget,使用或不使用-r或-p,决定是否下载文件的新副本取决于本地和远程时间戳以及文件的大小。-nc不能与-N同时指定。 -N,——timestamping:打开时间戳。

我想要的答案在https://unix.stackexchange.com/a/9557/114862。

当本地文件大于或等于服务器版本时,使用-c标志将避免重新下载。

我使用-N时遇到了问题,因为我想将输出保存到不同的文件名。

时间戳,wget文档:

满足以下两个条件之一的文件被认为是新文件: 该名称的文件在本地不存在。 该名称的文件确实存在,但远程文件的修改时间比本地文件晚。

使用测试:

test -f stackoverflow.html || wget -O stackoverflow.html https://stackoverflow.com/

如果文件存在,test将计算为FALSE,因此wget将被执行。

-nc, --no-clobber

如果一个文件在同一个目录中下载了多次,wget的行为取决于几个选项,包括-nc。在某些情况下,本地文件在重复下载时被“clobbered”(覆盖)。在其他情况下,它被保留。

When running wget without -N, -nc, or -r, downloading the same file in the same directory results in the original copy of file being preserved and the second copy being named file.1. If that file is downloaded yet again, the third copy is named file.2, etc. When -nc is specified, this behavior is suppressed, and wget refuses to download newer copies of file. Therefore, "no-clobber" is a misnomer in this mode: it's not clobbering that's prevented (as the numeric suffixes were already preventing clobbering), but rather the multiple version saving that's being turned off.

当使用-r但不带-N或-nc运行wget时,重新下载文件会导致新副本覆盖旧副本。添加-nc可以防止这种行为,而是导致保留原始版本,忽略服务器上的任何较新的副本。

当使用-N运行wget时,无论是否使用-r,是否下载文件的新副本的决定取决于本地和远程时间戳以及文件的大小。-nc不能与-N同时指定。

注意,当指定-nc时,后缀为.html或.htm的文件将从本地磁盘加载,并像从web检索到它们一样进行解析。