从 URL 列表下载并输出到相关目录

Jui*_*icy 2 bash wget

我在文本文件中有一个 URL 列表:

http://host/index.html
http://host/js/test.js
http://host/js/sub/test_sub.js
http://host/css/test.css
Run Code Online (Sandbox Code Playgroud)

我想通过在我的文件系统上复制同一棵树来下载这些文件。例如,当我完成时,我想以下面的树结束:

wd/
 |_index.html
 |_js/
 |  |_test.js
 |  |_sub/
 |     |_test_sub.js/
 |_css/
    |_test.css
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:

添加目标文件作为列表中的第二个参数:

http://host/index.html 
http://host/js/test.js js/test.js
http://host/js/sub/test_sub.js js/sub/test_sub.js
http://host/css/test.css css/test.css
Run Code Online (Sandbox Code Playgroud)

使用 while 循环来告诉wget在哪里保存这些:

 while read url target; do
   wget "$url" -P "$target";
 done < site_media_list.txt 
Run Code Online (Sandbox Code Playgroud)

这不起作用,最终结果是同一目录中的所有文件,没有新目录。

pii*_*_ke 6

制作一个仅包含链接列表(无路径)的文件,每行一个,然后wget -nH -x -i links_list.txt将文件下载到工作目录,保持目录结构不变。下面给出了相同命令的更具可读性的版本。

wget --no-host-directories --force-directories --input-file=links_list.txt
Run Code Online (Sandbox Code Playgroud)

Wget 有许多灵活的目录选项。查找man wget目录选项以获取更多信息。