我正在尝试使用 wget -m
递归下载多个文件,我打算grep
所有下载的文件以查找特定文本。目前,我可以等待wget
完全完成,然后运行 grep。但是,wget
过程非常耗时,因为有很多文件,相反,我想通过在下载每个文件并打印到stdout
时grep
-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
这将打印出所有包含pattern
到stdout
的行,并且wget
本身不会从终端产生可见的输出。包含sleep
是因为否则在执行tail
命令时不会创建file.txt
。
请注意,此命令将错过wget
在第一秒内下载的任何结果。