【发布时间】:2013-08-21 16:40:21
【问题描述】:
在 Linux 中,使用命令 tailf,如何跟踪文件夹内和子文件夹中的多个日志文件?
【问题讨论】:
标签: unix logging command-line tail
在 Linux 中,使用命令 tailf,如何跟踪文件夹内和子文件夹中的多个日志文件?
【问题讨论】:
标签: unix logging command-line tail
要记录一个文件夹内的所有文件,你可以去文件夹写
tail -f *.log
要将子文件夹添加到 tailf 命令,请使用
tail -f **/*.log
当然,正则表达式可以改进为只匹配特定的文件名。
【讨论】:
tail -f ../logs/**/*log* ../logs/*log*
multitail -Q 5 '/path/to/logs/*' - 其中 5 是检查新文件的秒数。使用apt-get install multitail 或yum 或其他方式安装它。
tailf **/*.log 仅适用于一级子文件夹
multitail 正是我想要的。例如,如果我有 5 个文件,我想在终端上同时查看所有 5 个文件,并且在数据更改时只查看每个文件的最后几行。
这将递归地查找当前目录及其子文件夹中的所有 *.log 文件并跟踪它们。
find . -type f \( -name "*.log" \) -exec tail -f "$file" {} +
或者很快用 xargs:
find . -name "*.log" | xargs tail -f
【讨论】:
如果所有日志文件的扩展名不同。您可以使用以下命令。
tail -f **/*
【讨论】:
这种方式递归查找文件,从每个文件的第 5 行开始打印行并保存在 concat.txt 中
find . -type f \( -name "*.dat" \) -exec tail -n+5 -q "$file" {} + |tee concat.txt
【讨论】:
要将 luchaninov 的评论形式化为答案,multitail 在文件集更改时很有用。相比之下,tail 似乎无法找到启动后创建的新文件。
安装:
sudo apt install multitail
手册:
man multitail
用法:
multitail -Q 4 '/path/to/logs/*.log'
上面的命令应该每隔指定的秒数检查引用的模式是否有新文件。必须引用该模式。
【讨论】: