是否可以进行 wget 试运行?

是否可以进行 wget 试运行?

我知道你可以使用 递归下载网页wget,但可以进行试运行吗?这样你就可以进行测试运行,看看如果你真的这样做会下载多少内容?想想那些有很多指向媒体文件(例如图像、音频或电影文件)的链接的页面。

答案1

您可以使用--spider开关。

答案2

不,但是您可以使用-R它来拒绝媒体文件,直到您准备好实际下载它们。

答案3

使用--spider如下说明paradroid 的回答对于大多数情况来说都很好,但如果您尝试获取它将创建的文件名(例如,感谢--restrict-file-names或只是可靠地翻译 uri 的编码),则生成的“远程文件存在”输出是不够的。

我的解决方案是确保它无法写入文件,然后捕获错误:

filename="$(wget -P /. "$uri" 2>&1 \
  |awk 'pd = index($0, ": Permission denied") {print substr($0, 4, pd - 4)}'
)"
echo "Would save: $filename"

-P /.选项指定目录前缀为/, root。(奇怪的是,wget它会忽略-P /并写入本地目录。点可以解决这个问题。)

请注意,您不应以具有 写权限的用户身份运行此程序/。如果您有这样的权限,请尝试以下操作:

filename="$(
  d="$(mktemp -d)";
  chmod 000 $d;
  wget -P $d "$uri" 2>&1 |awk -v d=$d/ '
    a = index($0, d) && b = index($0, ": Permission denied") {
      a += length(d);
      print substr($0, a, b - a)
    }
  ';
  rm -rf $d
)"
echo "Would save: $filename"

这将创建一个临时目录,使其不可写,然后wget以其作为前缀运行。然后删除临时目录。

相关内容