![是否可以进行 wget 试运行?](https://linux22.com/image/1235656/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E8%BF%9B%E8%A1%8C%20wget%20%E8%AF%95%E8%BF%90%E8%A1%8C%EF%BC%9F.png)
我知道你可以使用 递归下载网页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
以其作为前缀运行。然后删除临时目录。