在 Linux 中统计日志行数,常见做法取决于你想统计的是整个文件、某段时间、还是匹配关键字的行。下面按常见场景给你总结。
wcwc -l /var/log/syslog
示例输出:
12345 /var/log/syslog
只显示行数(不显示文件名):
wc -l < /var/log/syslog
wc -l /var/log/nginx/access.log
tail -f /var/log/nginx/access.log | wc -l
⚠️ 注意:这个命令在 Ctrl+C 后才会输出统计结果。
grepgrep -c "ERROR" /var/log/syslog
忽略大小写:
grep -ci "error" /var/log/syslog
统计多个关键字(或关系):
grep -c -E "ERROR|WARN" /var/log/syslog
grep "2025-01-20" /var/log/nginx/access.log | wc -l
指定时间段:
grep "2025-01-20 10:" /var/log/nginx/access.log | wc -l
zcat /var/log/syslog.1.gz | wc -l
或:
zgrep -c "ERROR" /var/log/syslog.1.gz
cat /var/log/*.log | wc -l
只统计匹配的文件:
find /var/log -name "*.log" -exec wc -l {} +
tail -n 1000 /var/log/syslog | wc -l
✅ 统计 1 小时内 ERROR 日志数量:
grep "2025-01-20 10:" /var/log/app.log | grep -c "ERROR"
✅ 统计 nginx 今天访问量:
grep "$(date '+%d/%b/%Y')" /var/log/nginx/access.log | wc -l
wc -l 统计的是 换行符数量,如果最后一行没有换行可能少算一行grep -c,比 grep | wc -l 更快tail -f如果你愿意,可以告诉我:
我可以帮你写一条完全适用的命令。