我正在尝试使用wget -m
递归下载多个文件,我打算grep
所有下载的文件以查找特定文本。目前,我可以等待wget
完全完成,然后运行grep。但是,wget
进程非常耗时,因为有很多文件,而我希望通过grep
显示每个文件的进度,因为它下载并打印到stdout
,所有这些都在下一个文件下载。
示例:
download file1
grep file1 >> output.txt
download file2
grep file2 >> output.txt
...
感谢您就如何实现这一目标提出任何建议。
答案 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
这将打印出包含pattern
到stdout
的所有行,wget
本身不会产生终端可见的输出。包含sleep
是因为在file.txt
命令执行时不会创建tail
。
注意,此命令将错过wget
在第一秒内下载的任何结果。