我使用此命令列出最后一天修改(或创建)的所有文件
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 +N
A满足氮+1≤A,即至少修改的文件氮+1 天前。
如果您发现这些规则很难记住,请改用参考文件。
touch -d '1 day ago' cutoff
find . -newer cutoff
(语法“1 天前”需要 GNU touch
。)