我想从我们组织的图形存储库网页下载所有图形文件。他们是插画家(.ai) 格式和 Corel Draw (.cdr) 格式。
它们是直接超链接的(即<a href="http://server/path-to-file.ai">...</a>
.
答案1
wget
包括直接支持这一点的功能:
wget -r -A "*.ai,*.cdr" 'address-of-page-with-hyperlinks'
-r
启用递归模式,因此它将下载超过给定 URL 的文件,并-A
限制最终下载和保留的文件。
答案2
阅读该页面
curl
过滤带有 的超链接
grep
。请注意,这利用了它们的格式一致(如<a href="..."
)这一事实。一个HTML/XML 解析器真的应该使用对于任何稍微复杂一点的事情。使用 剪切超链接地址
grep -o
,grep
再次使用 过滤以仅提取目标具有所需扩展名和协议的链接。下载这些结果文件
wget
(或者curl
如果指定了输出也可以使用)。另外,我们还提供了echo
控制台的 URL。
请注意,为了方便起见,我们在脚本中的过滤顺序与上面的顺序并不完全相同。
重击:
#!/bin/bash
while read url; do
# Echo URL to terminal
echo "${url}"
# Download files
wget -q "${url}"
done < <(
# Get page
curl -s 'address-of-page-with-hyperlinks' | \
# Filter hyperlinks
grep -Po 'href="http://[^"]+\.(cdr|ai)"' | \
grep -Po 'http://[^"]+'
)