删除早于 X 分钟的文件

问题描述 投票:0回答:3

我想删除超过 59 分钟的文件。到目前为止我有这个:

find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*" -exec rm -f {} \;

这不起作用,似乎会删除所有文件。我已经对此进行了多次测试,我认为问题与

daystart
有关。

我已阅读手册页,它似乎以一天的开始而不是 24 小时前为基准时间。如果是这种情况,如何准确删除超过 59 分钟的文件?我需要考虑

daystart
并添加更多分钟吗?

示例:

ubuntu@ip-10-138-30-118:/tmp$ ls -la
total 8
drwxrwxrwt  2 root   root   4096 Jul 20 14:39 ./
drwxr-xr-x 23 root   root   4096 Jun 25 18:34 ../
-rw-rw-r--  1 ubuntu ubuntu    0 Jul 20 12:35 a.txt

以下两个命令,返回文件:

ubuntu@ip-10-138-30-118:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +59 -type f -name "*.*"
/tmp/a.txt

并且:

ubuntu@ip-10-138-30-118:/tmp$ find /tmp -daystart -maxdepth 1 -mmin +359 -type f -name "*.*"
/tmp/a.txt

但是,该文件不超过 659 分钟(10.9 小时)!但在 759(12.65 小时)时,它不再返回文件了?

linux bash command-line
3个回答
39
投票

-mmin
一起使用时,
-daystart
似乎使其从今天的结束开始计算,而不是开始。

如果您只想查找超过 59 分钟前修改的文件,则不需要该选项。

-mmin
默认从当前时间开始计算。

barmar@dev:~/testdir$ date
Sat Jul 20 10:02:20 CDT 2013
barmar@dev:~/testdir$ ls -l
total 0
-rw-r--r-- 1 barmar adm 0 Jul 20 09:57 a.txt
barmar@dev:~/testdir$ find . -maxdepth 1 -mmin +2 -type f
./a.txt
barmar@dev:~/testdir$ find . -maxdepth 1 -mmin +10 -type f

16
投票

这应该适合你

find /path -mmin +59 -type f -exec rm -fv {} \;


0
投票

您最近提交了一篇关于从计算机检索数据的文章的回复。你能给我你的脸书、电子邮件……或者其他什么东西,以便我可以联系你并向你学习一些东西吗?这样可以吗?

© www.soinside.com 2019 - 2024. All rights reserved.