当我执行 wget 两次时,它不会覆盖文件,而是在名称后附加一个 .1。
$ wget https://cdn.sstatic.net/askubuntu/img/logo.png
...
Saving to: ‘logo.png’
...
$ wget https://cdn.sstatic.net/askubuntu/img/logo.png
...
Saving to: ‘logo.png.1’
...
我想让wget覆盖logo.png文件:
- 不管它是否已经存在
- 不管它是否在远程服务器上没有改变,都希望重新下载它(不能使用 -N 标志)
- 无论文件大小是否相同,每次都使用 wget 下载并替换。
- 不在名称末尾附加 .1。始终保持相同的名称 (logo.png)
- 不能使用 cURL 或其他东西。
- 最好不要使用 -O 标志,因为我想保留文件的原始名称。
还有办法吗?我搜索了但找不到示例?
最佳答案
有一种方法可以使用 wget
选项来做到这一点,但它有点 hack:
wget --page-requisites --no-host-directories --cut-dirs=1000 URL
解释:
--page-requisites
强制下载,破坏现有文件,但创建树状层次结构--no-host-directories
阻止wget
创建以 URL 中的主机命名的顶级目录--cut-dirs=1000
剪切第1000个目录组件,有效地将下载的文件放在当前目录
另一个不太复杂的解决方案是为此创建一个 bash
函数:
wget_clobber() {
local url=${1:?First parameter is a URL}
wget --output-document="${url##*/}" "$url"
}
解释:我们只是使用--output-document
(或-O
)强制wget
写入以以下命名的文件URL 的最后一部分(${url##*/>
等同于 $(basename "$url")
,您也可以使用后者)。
关于wget - 使 wget 覆盖文件(如果已存在)并每次下载它,无论它在远程服务器上是否被更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63149792/