在wget递归下载之间grep文件

时间:2015-02-15 03:58:46

标签: linux bash unix grep wget

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

示例:

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

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

2 个答案:

答案 0 :(得分:1)

正如c4f4t0r所指出的那样

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

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

编辑:

以下是您可以使用的命令行。它创建了一个名为file的文件,并保存了来自wget的输出消息。之后它将消息文件保留。

使用awk查找&#34;已保存&#34;并提取文件名,然后使用grep从filename中进行模式化。

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

答案 1 :(得分:1)

基于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在第一秒内下载的任何结果。