wget递归下载之间的Grep文件

Grep files in between wget recursive downloads

我正在尝试使用 wget -m 递归下载多个文件,我打算 grep 所有下载的文件以查找特定文本。目前,我可以等待 wget 完全完成,然后 运行 grep。但是,wget 过程非常耗时,因为有很多文件,相反,我想通过 grep-ing 每个文件下载并打印到 stdout 来显示进度,所有这些都在下一个文件下载。

示例:

download file1
  grep file1 >> output.txt
download file2
  grep file2 >> output.txt
...

感谢您就如何实现这一点提出任何建议。

正如 c4f4t0r 指出的那样

 wget -m -O - <wesbites>|grep --color 'pattern'

使用 grep 的颜色功能来突出显示模式似乎很有帮助,尤其是在处理大量数据输出到终端时。

编辑:

下面是您可以使用的命令行。它创建一个名为 file 的文件并保存来自 wget.Afterwards 的输出消息 它跟踪消息文件。

使用 awk 查找带有 "saved" 的任何行并提取文件名,然后使用 grep 从文件名中提取模式。

 wget -m websites  &> file &  tail -f -n1 file|awk -F "\'|\`"  '/saved/{system( ("grep  --colour pattern ") )}'

基于 Xorg 的解决方案,我可以通过一些小的调整来达到我想要的效果:

wget -m -O file.txt http://google.com 2> /dev/null & sleep 1 && tail -f -n1 file.txt | grep pattern

这将打印出包含 patternstdout 的所有行,并且 wget 本身不会产生从终端可见的输出。 sleep 包含在内,否则 file.txt 将不会在执行 tail 命令时创建。

请注意,此命令将错过 wget 在第一秒内下载的所有结果。