使用find按日期计算文件

时间:2012-02-28 17:18:24

标签: bash

我正在尝试按日期计算文件数。日期是文件名中的一个字段,例如

CTCA~AT2~FVT~8388358~ONTAFT2-1~8~P~1100~HR24-500~033189784938~20120224~220306.VER

这就是我所做的:

find . -name '*VER' |awk -F~ '{print $11}'|uniq -c

这是我得到的输出:

  1 20120222
  3 20120222
  3 20120224
  3 20120224
  3 20120225
  5 20120225

但我想总结一下这样的计数

  4 20120222
  6 20120224
  8 20120225

我该怎么做?

/ -------------------------------------- /

使用

进行简单搜索
find . -name '*VER' 

返回

...
./CTCA~AT2~FVT~8388358~ONTAFT2-1~7~P~1100~HR24-200~035699170847~20120217~150754.VER
./CTCA~AT2~FVT~8388358~ONTAFT2-1~8~P~1100~HR24-500~033066015695~20120223~204125.VER
./CTCA~AT2~FVT~7561825~ONTAFT2-1~4~P~1100~HR24-100~035688466560~20120223~085805.VER
./CTCA~AT2~FVT~9078749~ONTAFT2-1~4~P~1100~HR24-200~035580595029~20120209~110625.VER
./CTCA~AT2~FVT~7561825~ONTAFT2-1~5~P~1100~HR22-100~028933090384~20120223~104932.VER
...

2 个答案:

答案 0 :(得分:4)

这正是uniq -c应该做的。如果它不起作用,那是因为你的输入没有排序。试试这个:

find . -name '*VER' |awk -F~ '{print $11}'|sort|uniq -c

答案 1 :(得分:1)

这是我的解决方案,它跳过uniq命令:

find ... | awk -F~ '{count[$11]++} END{for (d in count) {print count[d], d}}

策略是使用日期作为索引创建一个名为 count 的数组。最后,打印出来。