下载文件中的网页列表并重命名它们以避免覆盖?

Tim*_*Tim 5 wget

$ wget -r -np  -nH --cut-dirs=2 -p -k "http://www.example.com/1" -O test.html
Cannot specify both -k and -O if multiple URLs are given, or in combination
with -p or -r. See the manual for details.

Usage: wget [OPTION]... [URL]...
Run Code Online (Sandbox Code Playgroud)

我想知道如何解决问题?

在我的实际问题中,我在文本文件中存储了一个列表网址,例如

http://www.example.com/1
http://www.example.com/2
http://www.example.com/3
Run Code Online (Sandbox Code Playgroud)

我想用必要的附属文件下载每个网页来替换网页。

默认情况下,每个下载的文件都命名为index.html,因此会覆盖之前下载的网页。所以我试图用代表下载顺序的数字重命名下载的文件:

i=0
for url in $(cat ../htmls); 
do  
wget -r -np  -nH --cut-dirs=1 -p -k "$url" -O $(printf %04d $i).html; 
i=$((i+1))
done
Run Code Online (Sandbox Code Playgroud)

那是出现开头错误的时候。

ter*_*don 5

您将需要这些index.html文件,因为网页中的各种链接都依赖于它们。我只是将每个网页保存到自己的目录中:

while read url; do
    mkdir "$url";
    cd "$url"
    wget -r -np  -nH --cut-dirs=1 -p -k "$url"
    cd ../
done
Run Code Online (Sandbox Code Playgroud)

事实证明,wget默认情况下已经这样做了,所以请改用Stephen 的方法