删除超过X分钟的文件

时间:2013-07-20 14:50:49

标签: linux bash command-line

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

2 个答案:

答案 0 :(得分:21)

-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

答案 1 :(得分:2)

这应该对你有用

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