删除今天之前创建的文件

删除今天之前创建的文件

我想搜索创建日期早于今天的文件。
我会:

find $HOME -type f -name "myFile_*.sql.zip" -mtime +1

但它没有返回任何内容,它至少应该返回一个文件。

我哪里错了?

答案1

find返回-mtime +1两天或两天前修改过的文件。

这是一种有据可查的行为,即-mtime忽略任何小数部分。从( 、和man find中的时间计算相同):-atime-mtime-ctime

-atime n

文件最后一次被访问是在 n*24 小时前。当 find 计算出文件最后一次被访问是在多少个 24 小时前时,小数部分会被忽略,因此要匹配 -atime +1,文件必须至少在两天前被访问过。

现在如果你可以使用几个解决方案:

  1. 你可以做:

    find . -type f -mtime +0
    

    这将使您获得一天或一天​​以前修改过的文件。

    就你的情况而言:

    find $HOME -type f -name "myFile_*.sql.zip" -mtime +0
    
  2. 为了获得像这种情况的精度,您应该使用-mmin严格匹配分钟的选项。

    假设您想要获取 7 小时 10 分钟(即 430 分钟前)前修改的文件,您可以执行以下操作:

    find . -type f -mmin +430
    

    对于您来说,请进行计算并430用该值替换:

    find $HOME -type f -name "myFile_*.sql.zip" -mtime +430
    
  3. 另一个选择是以相反的方式进行。

    您可以创建一个参考文件,例如ref.txt

     touch -d 'today + 2 days ago' ref.txt
    

    现在您可以找到最近修改的文件ref.txt

    find . -type f -newer ref.txt
    

    就你的情况而言:

    find $HOME -type f -name "myFile_*.sql.zip" -newer ref.txt
    

一旦您对结果满意,您可以删除文件,例如:

find . -type f -mmin +430 -delete

相关内容