我正在尝试计算上个月创建了多少PDF。我正在使用以下命令,但它正在返回0
find . -name '*.pdf' -mtime +46 ! -mtime +30 | wc -l
我在正确的目录中,似乎逻辑是正确的...任何关于为什么这不起作用的想法?是否有一种更简单的方法,比如通过我正在寻找的特定月份,而不是试图计算这样的日子?
答案 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