如何使用 mtime 查找超过 1 天的文件?

如何使用 mtime 查找超过 1 天的文件?

我正在尝试删除所有超过 1 天的文件。在执行删除文件的脚本之前,我尝试使用 mtime 查找文件。但是,我的命令面临同样的问题-

我当前的日期是

Wed Jan 27 11:49:20 BDT 2016

我的文件列表是-

Jan 25 15:11 25-01-2016.txt            
Jan 26 13:05 26-01-2016.txt    
Jan 27 02:30 27-01-2016.txt    
Jan 25 15:11 dfk-25-01-2016.txt    
Jan 26 13:05 dfk-26-01-2016.txt      
Jan 27 02:30 dfk-27-01-2016.txt 

我认为-mtime +1应该列出一天以上的所有文件。

find /etc/output/*.txt -mtime +1
find /etc/output/*.txt -mtime +0

/output/25-01-2016.txt
/output/dfk-25-01-2016.txt

find /etc/output/*.txt -mtime -1

/output/26-01-2016.txt
/output/27-01-2016.txt
/output/dfk-26-01-2016.txt
/output/dfk-27-01-2016.txt

我想要的输出如下,

find /etc/output/*.txt -mtime +1

/output/25-01-2016.txt
/output/dfk-25-01-2016.txt

find /etc/output/*.txt -mtime +0

/output/26-01-2016.txt
/output/dfk-26-01-2016.txt
/output/25-01-2016.txt
/output/dfk-25-01-2016.txt

答案1

两点:找到“忽略小数部分”。我猜它会计算小时数,除以 24,然后将结果整数化(丢弃小数)。因此,-mtime 0检查一个文件,比较 mtime,转换为小时,除以 24。如果结果的整数部分为 0,则表示匹配。这意味着 0.99999 小时前将匹配。然后-mtime +0匹配任何 mtime 差异至少为 24 小时的文件。

其次,如果您希望 mtime 计算日历天数,而不是n从现在起的 -24 小时周期,请使用-daystart.所以-daystart -mtime 0意味着今天-daystart -mtime +0表示今天之前。

相关内容