我想生活tail
在三个不同的文件夹中,其中包含和排除某些文件。
文件夹 1:
- 路径:/var/www/app/var/log/
- 仅排除:file1.log 和 file2.log
文件夹2:
- 路径:/var/log/web/log/
- 仅包含:error.log
文件夹 3:
- 路径:/var/log/service/log/
- 仅包含:app1.error.log & app2.error.log
我如何在一个命令中从三个不同的文件夹中包含和排除某些文件tail
?
tail -f ???
到目前为止已尝试过
tail -f /var/www/app/var/log/!(file1,file2).log /var/log/web/log/error.log /var/log/service/log/{app1,app2}.log
但这行不通。我觉得需要使用find
+tail
答案1
使用我的答案到你关于 SU 的问题并没有什么不同创建三个find
命令来查找您要查找的文件。然后:
{ find … -print0 ; find … -print0 ; find … -print0 ; } | xargs -r -0 tail -F
笔记:
-F
因为这:如何进行tail -f
日志轮换文件?find
命令只运行一次。如果出现一个名称已匹配但当时不存在的新文件,则将tail
忽略它。换句话说:当tail
启动时,它的所有参数都是固定的,待创建的文件不在其中。- 如果结果形式
find
s 超过极限然后xarg
将运行多个tail
(但默认情况下不是并行的)。你当然不想要这个。希望您find
能找到合理数量的文件并且不会超出限制。 find -print0
并且xargs -r -0
不便于携带。您标记了乌班图;在 Ubuntu 中它们可以工作。
答案2
尾部您想要的所有文件...将每个尾部输出到文件...尾部新文件。
tail -f /var/log/large.log > ~/full.log && tail -f /var/log/medium.log > ~/full.log && tail -f ~/full.log
你可以将它作为一个命令运行,但一开始看起来有点时髦……但如果你愿意,你可以在另一个 tty 中运行它,然后在你希望它看起来不错的地方尾随完整日志。