2016-07-14 176 views
0

我想要一个shell命令来查找修改日期为昨天 - 仅24小时的文件。这意味着我想查找昨天修改过的文件。Shell命令查找昨天修改过的文件24小时

+0

假设您在2016-07-14 10:00运行该命令。您是否正在寻找2016-07-13T00:00:00和2016-07-13T23:59:59之间修改的文件(全部位于当前时区)?或者您正在查找过去24小时内修改过的文件,在这种情况下,范围介于2016-06-13T10:00:00和2016-07-14T10:00:00之间?或者是其他东西? –

回答

1

使用找到mtimedaystart,它会找到文件修改1 * 24小时前,开始从午夜(一天开始)计算:

find dir -daystart -mtime 1 
+0

请参阅[解释'find -mtime'命令](http://stackoverflow.com/questions/25599094/explaining-find-mtime-command/25599430?s=1|4.3858#25599430) - 我认为这不会做什么还需要。 –

+0

没错,但是它会在与'-daystart'结合时做正确的事情(即从昨天的0:00到23:59查找文件) –

+0

Yup - '''''''''''''''假设您使用的是GNU'find' 。 (例如,BSD/Mac OS X'find'不支持'-daystart',即使它支持'-newermt'和相关选项。) –

1

这个答案假设你有GNU datefind。它还假定如果您在2016年7月14日随时运行脚本,您希望在2016-07-13T00:00:00或2016-07-14T00:00:00之前修改文件。

如果这些假设是正确的,则可以使用:

find . -newermt "$(date -d yesterday +'%Y-%m-%d 00:00:00')" \ 
    '!' -newermt "$(date -d today  +'%Y-%m-%d 00:00:00')" 

第一命令取代产生(2016年7月14日上)的输出2016-07-13 00:00:00和第二2016-07-14 00:00:00。得到正确结果不需要-d today,但显示对称性。

条件总体意味着'在昨天凌晨午夜或之后修改,并且自今天午夜以来未修改'。

在没有GNU date的系统上执行此操作很难评估不同的日期。

请参阅Explaining find -mtime command了解为什么使用-mtime不符合假定要求的信息。

相关问题