来自不同文件夹的实时尾部,包含和排除文件

来自不同文件夹的实时尾部,包含和排除文件

我想生活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启动时,它的所有参数都是固定的,待创建的文件不在其中。
  • 如果结果形式finds 超过极限然后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 中运行它,然后在你希望它看起来不错的地方尾随完整日志。

相关内容