31

我想删除超过 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 小时),它不再返回文件了吗?

4

2 回答 2

33

与 , 一起使用时-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
于 2013-07-20T15:01:39.630 回答
10

这应该适合你

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

于 2018-05-14T14:08:11.270 回答