我正在尝试删除所有超过 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
表示今天之前。