使用 wget 从管道下载文件?无法写入 -(损坏的管道)错误

Downloading files from a pipe with wget? Cannot write to - (broken pipe) error

我正在尝试使用 wget 下载我的网站。

我有一个 sitemap.xml,其中包含指向我网站上每个页面的链接。这是下载源。

这是我的命令:

wget --verbose http://example.com/sitemap.xml --output-document - | egrep -o "http://example.com/[^<]+" | wget --verbose -i -

这将下载每一页,但问题是只有 HTML 被下载—— none 图片,CSS,或其他任何内容。

所以,在 this answer 的基础上,我想添加选项 -E -H -k -p:

-E: Append .html to the file name if it is an HTML file but doesn't end in .html or similar -H: Download files from other hosts, too -k: After downloading convert any link in it so they point to the downloaded files -p: Download anything the page needs for proper offline viewing

但是,当我修改命令时

wget --verbose http://example.com/sitemap.xml --output-document - | egrep -o "http://example.com/[^<]+" | wget --verbose -i -E -H -k -p -

然后我得到一个错误:

Cannot write to ‘-’ (Broken pipe).

我该如何解决这个问题?

在 GNU wget 中,如果你使用 -i 它应该紧跟文件名(或 - 表示标准输入),this

wget --verbose -i -

没问题,但是这里

wget --verbose -i -E -H -k -p -

-i后没有文件名,还有其他选项,请按

wget --verbose -E -H -k -p -i -

然后写下它是否对你有用。当您使用 wget's man page 时,请注意选项是否应该或不应该跟在参数后面,例如 -i 应该并因此显示为

-i file

虽然例如v(冗长)不能,因此确实显示为

-v