您可以使用lynx或links(文本模式 Web 浏览器)下载并显示网页中的链接列表,然后将其通过管道传输grep以仅提取 PDF 链接。例如:
URL='https://www.example.com/files/'
lynx -dump -listonly -nonumbers "$URL" | grep -i '\.pdf$'
Run Code Online (Sandbox Code Playgroud)
注意:双引号很重要"$URL",特别是当 URL 包含空格或 shell 元字符(例如;或&,在 URL 中很常见)时。避免让自己头疼,在使用 URL 字符串和包含 URL 的变量时始终引用它们(事实上,在使用变量时使用双引号几乎总是一个好主意,无论它们是否包含 URL - 请参阅 Why does my shell脚本因空格或其他特殊字符而阻塞?)。
然后,您可以将grep的输出重定向到一个文件,使用文本编辑器对其进行编辑以删除您不感兴趣的 PDF 文件,然后使用 的wget( -i)--input-file=file选项下载文件中的所有 URL。wget或者您可以使用或一次手动下载它们curl。
顺便说一句,wget还有一个用于镜像网站的-m( ) 选项,以及用于精确控制下载内容的众多选项(例如,接受或拒绝与后缀或某些类似 glob 的模式匹配的文件 -或- 和&对正则表达式执行相同操作),并控制 wget 是否将跟踪到其他站点(以及哪些其他站点)的链接,是否跟踪到父目录或子目录的链接(以及深度有多少层)等等。有很多选项,选项组合之间的交互甚至更多,所以不要指望立即掌握它。--mirror-A-R-A pdf-A '*.pdf'--accept-regex--reject-regex