如果wget中已经存在文件,跳过下载?

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

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

但如何使wget跳过下载,如果__abc0已经可用?

179884 次浏览

试试下面的参数:

-nc--no-clobber:跳过将下载到的下载 现有的文件。< / p >

示例用法:

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文档:

满足以下两个条件之一的文件被认为是新文件:

  1. 该名称的文件在本地不存在。
  2. 该名称的文件确实存在,但远程文件的修改时间比本地文件晚。

使用test:

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

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

-nc, --no-clobber

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

当运行wget而没有-N-nc-r时,在同一目录下下载相同的文件会导致文件的原始副本被保留,而第二个副本被命名为file.1。如果再次下载该文件,则第三个副本命名为file。2,等等。当指定-nc时,此行为将被抑制,并且wget拒绝下载文件的新副本。因此,“no-clobber"在此模式中是一个错误的名称:它不是阻止敲打(因为数字后缀已经阻止了敲打),而是关闭了多个版本保存。

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

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

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