乐闻世界logo
搜索文章和话题

How to force wget to overwrite an existing file ignoring timestamp?

2 个月前提问
2 个月前修改
浏览次数50

1个答案

1

在使用wget命令下载文件时,默认情况下,如果本地已存在同名文件,wget会根据文件的时间戳来判断是否需要覆盖本地文件。如果服务器上的文件比本地文件更新,那么它会覆盖;如果没有更新,它通常会跳过下载该文件。

要让wget忽略文件的时间戳并强制覆盖本地文件,可以使用-N(或--timestamping)选项的反面操作,即使用-O(或--output-document)选项来指定输出的文件名,即使该文件已存在。

例如,假设我们需要下载一个名为example.txt的文件,命令可以是:

bash
wget -O example.txt http://www.example.com/example.txt

这里的-O example.txt告诉wget将下载的内容存储为example.txt,无论此文件是否已存在,都会被覆盖。

如果你希望下载多个文件,并且每个文件都要强制覆盖本地文件,则可能需要写一个脚本来循环处理每个下载链接,并使用上述命令。

举一个实际的例子,如果我们在自动化脚本中定期从一个气象数据源更新数据,可以这样写:

bash
#!/bin/bash wget -O daily-report.txt https://weatherdata.example.com/daily-report.txt wget -O weekly-report.txt https://weatherdata.example.com/weekly-report.txt

这个脚本将确保每次运行时,无论本地文件的时间戳如何,都会从指定URL下载最新的日报和周报,并覆盖本地的daily-report.txtweekly-report.txt文件。这在处理需要常常更新的数据时非常有用。

2024年7月30日 00:22 回复

你的答案