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

问题描述 投票:0回答:5

这是一个简单的 wget 命令:

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

如果

pic.png
已经可用,如何让 wget 跳过下载?

parameters download command-line-interface wget
5个回答
401
投票

尝试以下参数:

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

使用示例:

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

284
投票

-nc
--no-clobber
选项不是最佳解决方案,因为不会下载较新的文件。应使用
-N
来代替,仅当服务器有较新版本时才会下载并覆盖文件,因此正确答案是:

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

然后使用 -N 运行 Wget,无论有或没有

-r
-p
,决定是否下载文件的较新副本取决于本地和远程时间戳以及文件的大小。
-nc
不能与
-N
同时指定。

-N
--timestamping
:打开时间戳。


36
投票

我正在寻找的答案位于https://unix.stackexchange.com/a/9557/114862

当本地文件大小大于或等于服务器版本时,使用

-c
标志将避免重新下载。


27
投票

当使用

-r
-p
运行 Wget,但没有
-N
-nd
-nc
时,重新下载文件将导致新副本覆盖旧副本。

因此添加

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

请参阅 GNU 的更多信息。


2
投票

我遇到了

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

时间戳,wget 文档

如果满足以下两个条件之一,文件将被视为新文件:

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

使用

test

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

如果文件存在不存在

test
将评估为FALSE,因此
wget
将被执行。

© www.soinside.com 2019 - 2024. All rights reserved.