【问题标题】:How to tail all the log files inside a folder and subfolders?如何跟踪文件夹和子文件夹中的所有日志文件?
【发布时间】:2013-08-21 16:40:21
【问题描述】:

在 Linux 中,使用命令 tailf,如何跟踪文件夹内和子文件夹中的多个日志文件?

【问题讨论】:

    标签: unix logging command-line tail


    【解决方案1】:

    要记录一个文件夹内的所有文件,你可以去文件夹写

    tail -f *.log
    

    要将子文件夹添加到 tailf 命令,请使用

    tail -f **/*.log
    

    当然,正则表达式可以改进为只匹配特定的文件名。

    【讨论】:

    • 到尾文件夹+子文件夹tail -f ../logs/**/*log* ../logs/*log*
    • 有没有办法跟踪所有文件和所有新文件(尚不存在)?
    • multitail -Q 5 '/path/to/logs/*' - 其中 5 是检查新文件的秒数。使用apt-get install multitailyum 或其他方式安装它。
    • tailf **/*.log 仅适用于一级子文件夹
    • 谢谢@luchaninov,multitail 正是我想要的。例如,如果我有 5 个文件,我想在终端上同时查看所有 5 个文件,并且在数据更改时只查看每个文件的最后几行。
    【解决方案2】:

    这将递归地查找当前目录及其子文件夹中的所有 *.log 文件并跟踪它们。

    find . -type f \( -name "*.log" \) -exec tail -f "$file" {} +

    或者很快用 xargs:

    find . -name "*.log" | xargs tail -f

    【讨论】:

      【解决方案3】:

      如果所有日志文件的扩展名不同。您可以使用以下命令。

      tail -f **/*
      

      【讨论】:

      • @farid-movsumov 你能解释一下*/的意思吗?
      【解决方案4】:

      这种方式递归查找文件,从每个文件的第 5 行开始打印行并保存在 concat.txt 中

      find . -type f \( -name "*.dat" \) -exec tail -n+5 -q "$file" {} + |tee concat.txt
      

      【讨论】:

        【解决方案5】:

        要将 luchaninov 的评论形式化为答案,multitail 在文件集更改时很有用。相比之下,tail 似乎无法找到启动后创建的新文件。

        安装:

        sudo apt install multitail
        

        手册:

        man multitail
        

        用法:

        multitail -Q 4 '/path/to/logs/*.log'
        

        上面的命令应该每隔指定的秒数检查​​引用的模式是否有新文件。必须引用该模式。

        【讨论】:

          猜你喜欢
          • 2019-07-13
          • 1970-01-01
          • 2021-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-02
          相关资源
          最近更新 更多