linux - 删除早于 X 分钟的文件

标签 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 小时),它不再返回文件了吗?

最佳答案

当与 -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

关于linux - 删除早于 X 分钟的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17763415/

相关文章:

c++ - Cygwin C++ 开发

linux - 如何附加冒号零,:0 onto the end of an IP address string?

linux - 如何在 Bash/Ubuntu 12.04 中正确编写这个算术表达式?

bash - 如何比较 Bash 中 'if' 语句中的两个字符串变量?

linux - 在Linux命令行上将文件移动到匹配的文件夹中

linux - 查找不在列表中的文件

javascript - 从 bash 运行 API javascript

javascript - cookie是由javascript生成的吗?

linux - bash,无法执行二进制文件

ruby - OpenSuse - RubyGems 安装 - 错误的文件名