如何 tail 多个 gz 文件

如何 tail 多个 gz 文件

要跟踪多个日志文件,我使用:

tail /path/to/logs/*.log

要跟踪压缩的日志文件:

zcat /path/to/mylog.1.gz | tail

但我想跟踪多个压缩日志文件,因为以下输出将不可读:

tail /path/to/logs/*.gz

答案1

通过读取zcat每个文件名的输出(无通配符)从命名管道使用bash的过程替换语法...例如像这样:

tail <(zcat /path/to/mylog.1.gz) <(zcat /path/to/mylog.2.gz) ...

或者使用for循环进行 shell 的文件名通配...例如像这样:

for f in /path/to/logs/*.gz; do echo "====> $f"; zcat "$f" | tail; done

答案2

这对你有用吗?

ls -1 /path/to/logs/*.log.gz | xargs -i bash -c "zgrep -H . {} | tail -2 "

相关内容