我想搜索创建日期早于今天的文件。
我会:
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,文件必须至少在两天前被访问过。
现在如果你可以使用几个解决方案:
你可以做:
find . -type f -mtime +0
这将使您获得一天或一天以前修改过的文件。
就你的情况而言:
find $HOME -type f -name "myFile_*.sql.zip" -mtime +0
为了获得像这种情况的精度,您应该使用
-mmin
严格匹配分钟的选项。假设您想要获取 7 小时 10 分钟(即 430 分钟前)前修改的文件,您可以执行以下操作:
find . -type f -mmin +430
对于您来说,请进行计算并
430
用该值替换:find $HOME -type f -name "myFile_*.sql.zip" -mtime +430
另一个选择是以相反的方式进行。
您可以创建一个参考文件,例如
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