这是一个简单的 wget 命令:
wget http://www.example.com/images/misc/pic.png
如果
pic.png
已经可用,如何让 wget 跳过下载?
尝试以下参数:
、-nc
:跳过将下载到的下载 现有文件。--no-clobber
使用示例:
wget -nc http://example.com/pic.png
-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
当使用
-r
或 -p
运行 Wget,但没有 -N
、-nd
或 -nc
时,重新下载文件将导致新副本覆盖旧副本。
因此添加
-nc
将防止这种行为,而是导致保留原始版本并忽略服务器上的任何较新副本。
我遇到了
-N
的问题,因为我想将输出保存到不同的文件名。
如果满足以下两个条件之一,文件将被视为新文件:
- 本地尚不存在该名称的文件。
- 该名称的文件确实存在,但远程文件的修改时间比本地文件更新。
使用
test
:
test -f stackoverflow.html || wget -O stackoverflow.html https://stackoverflow.com/
如果文件存在不存在
test
将评估为FALSE,因此wget
将被执行。