获取上个月修改的文件数量

时间:2012-03-16 14:06:16

标签: linux bash shell

我正在尝试计算上个月创建了多少PDF。我正在使用以下命令,但它正在返回0

find . -name '*.pdf' -mtime +46 ! -mtime +30 | wc -l

我在正确的目录中,似乎逻辑是正确的...任何关于为什么这不起作用的想法?是否有一种更简单的方法,比如通过我正在寻找的特定月份,而不是试图计算这样的日子?

3 个答案:

答案 0 :(得分:22)

您正在查找所有pdf个文件:

  • 46天前
  • 不是30天前

    x>46 && x<=30  --> false
    

它将返回空结果。


   Numeric arguments can be specified as
   +n     for greater than n,
   -n     for less than n,
   n      for exactly n.

如果您想查找所有pdf个文件(30<x<46):

$ find . -name '*.pdf' -mtime +30 -mtime -46

答案 1 :(得分:8)

如果你正在使用GNU find,你可以像这样指定绝对日期:

find . -name '*.pdf' -newermt 2012-01-31 ! -newermt 2012-02-29 | wc -l

-newermt选项将查找最近修改过的文件,而不是绝对时间。

如果您不使用GNU,可以使用touch创建具有相应时间戳的两个文件,并找到这样的PDF:

touch -t 201201312359 oldest # 11:59 PM 1/31/2012
touch -t 201203010000 newest # midnight 3/1/2012
find . -name '*.pdf' -newer oldest ! -newer newest | wc -l

有关详细信息,请参阅GNU documentation

答案 2 :(得分:6)

您似乎正在寻找超过46天而不是超过30天(即更年轻)的文件。

这个怎么样?

 find . -name '*.pdf' -mtime -46 -mtime +30