在 wget 递归下载之间 Grep 文件



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

例:

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

感谢您就如何实现这一目标提供任何建议。

正如 c4f4t0r 指出的那样

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

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

编辑:

下面是您可以使用的命令行。 它创建一个名为file的文件,并保存来自WGET的输出消息。之后,它会尾随消息文件。

使用

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

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

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

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

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

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

最新更新