如何让 lynx 识别文件名中的空格

如何让 lynx 识别文件名中的空格

我正在使用脚本来查找 url 上所有 .pdf 文件的列表。但 lynx 似乎在文件名中存在空格问题。这是脚本:

lynx --dump http://www.somesite/here/ | awk '/http/{print $2} | grep pdf > ~/Desktop/links.txt

这将按预期工作,直到文件名中出现带有空格的 .pdf。 Lynx 似乎在空白处截断了文件名。有什么办法可以防止这种情况吗?

答案1

awk(默认情况下)使用空白作为字段分隔符,lynx 将转储的 url 中的空白渲染为空白。按照我在错误报告中建议的方式解决这个问题:

lynx -listonly -dump http://www.somesite/here/ | lynx -listonly -dump http://www.somesite/here/ | \
awk '/\.pdf$/{ sub("^[ ]*[0-9]+.[ ]*","",$0);打印}' > ~/Desktop/links.txt

如果内容恰好是 UTF-8 编码,lynx逃逸文本(撤消 URL 编码,例如%20),在本例中显示一个空格(为 awk 提供两个或多个字段,具体取决于名称中空格的数量)。

Debian 已完成转义#398274,2013 年(即 Ubuntu 18.04 已具备该功能)。

添加-listonly选项减少了错误匹配的数量,通过只查看列表网址。

如果您想查找多种文件类型,您可以在正则表达式中列出后缀作为替代项,例如,如下所示:

awk '/\.(pdf|odt|doc|docx)$/{ sub("^[ ]*[0-9]+.[ ]*","",$0);打印}' > ~/Desktop/links.txt

相关内容