查找命令返回错误数据

查找命令返回错误数据

我使用此命令列出最后一天修改(或创建)的所有文件

find ./ -mtime 1 -ls

但是,当我刚刚运行命令时(5 月 2 日 19:38),它不断返回 4 月 30 日以来的文件

谁能告诉我为什么会发生这种情况和/或给我一个更好的命令来查找过去 24 小时内修改或创建的文件

答案1

对于find几天前修改过的文件,最好使用-mmin而不是使用,-mtime因为后者会忽略任何小数部分。因此,1 天 23 小时也被视为 1 天。

man find

-atime n
         File was last accessed n*24 hours ago.  When find figures 
out how many 24-hour periods ago the file was  last  accessed, 
any fractional part is ignored, so to match -atime +1, a file has 
to have been accessed at least two days ago.

对于您的情况,以下内容将显示过去 24 小时(即 1440 分钟)内修改的文件:

find . -mmin -1440 -ls 

答案2

-mtime N表示文件的年龄A日内满足A<+1。换句话说,选择最近修改的文件-mtime N+1 天前。例如,-mtime 1选择 1 到 2 天前修改的文件。要选择最近一天(例如过去 24 小时内)修改的文件,请使用-mtime 0.

-mtime -N表示文件的年龄A满足A<,即修改的文件少于几天前。不太直观,意味着文件的年龄-mtime +NA满足+1≤A,即至少修改的文件+1 天前。

如果您发现这些规则很难记住,请改用参考文件。

touch -d '1 day ago' cutoff
find . -newer cutoff

(语法“1 天前”需要 GNU touch。)

相关内容