gpt4 book ai didi

wget - 使 wget 覆盖文件(如果已存在)并每次下载它,无论它在远程服务器上是否被更改

转载 作者:行者123 更新时间:2023-12-04 17:26:16 26 4
gpt4 key购买 nike

当我执行 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com