You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Unix服务器上按小时统计文件记录数?

按小时统计文件记录数的最简实现方法

假设你要统计的是文件修改时间所属日期小时段内的总记录数(即把每个文件的行数按其修改时间的日期+小时分组汇总),可以用一条Shell命令组合完成:

find /目标目录 -type f -exec sh -c 'echo "$(stat -c "%y" "$1" | cut -c1-13) $(wc -l < "$1")"' _ {} \; | awk '{key=$1" "$2; sum[key]+=$3} END {print "Date       Hour records"; for(k in sum) printf "%s   %d\n", k, sum[k]}' | sort

命令说明:

  • find /目标目录 -type f:遍历指定目录下的所有普通文件,替换/目标目录为你实际的文件存放路径(比如/data/logs)
  • stat -c "%y" "$1" | cut -c1-13:提取文件的修改时间,截取到小时部分,格式为YYYY-MM-DD HH
  • wc -l < "$1":统计单个文件的记录行数(避免输出文件名)
  • awk:将相同日期+小时的记录数累加汇总,最后按要求格式输出表头和统计结果
  • sort:对结果按时间顺序排序,保证输出的日期小时是连续的

如果你的需求是统计文件内容中每条记录的时间戳所属小时的数量(比如日志每行带时间),可以调整为:

cat /目标目录/* | awk '{dt=substr($0,1,13); count[dt]++} END {print "Date       Hour records"; for(k in count) printf "%s   %d\n", k, count[k]}' | sort

(注意:需要根据你实际的时间戳在每行的位置,调整substr($0,1,13)的截取范围)

内容的提问来源于stack exchange,提问作者Beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:58:35