4

我正在尝试查找 10 分钟前创建的文件,并-daystart在命令中使用参数(即创建/修改时间超过 10 分钟但小于 daystart)find,但-mmin优先考虑并被-daystart忽略。任何解决此问题的建议和意见表示赞赏。

下面的输出显示-daystart被忽略,理想情况下test应该只列出文件:

[rshetty@xxx ~]$ date 
Thu Feb 23 12:06:14 CST 2017 
[rshetty@xxx ~]$ find . -maxdepth 1 -type f -daystart -mmin +10 -exec ls -lrt {} \; 
-rw-r--r--. 1 rshetty users 18 Jan 11 2015 ./.bash_logout 
-rw-r--r--. 1 rshetty users 0 Feb 23 11:50 ./test 
-rw-r--r--. 1 rshetty users 231 Jan 11 2015 ./.bashrc 
-rw-r--r--. 1 rshetty users 193 Jan 11 2015 ./.bash_profile
4

2 回答 2

3

-daystart修改-mtime,-mmin和相关谓词的含义,这些谓词基于相对于现在的时间(默认情况下)进行操作;它本身不是谓词,因此除非您使用这些其他操作之一,否则它对您的find命令结果没有影响。

因此,如果您想过滤相对于当天开始的 mtime,则需要指定,如-mtime -1, after -daystart(而您的过滤器相对于当前时间应该是before -daystart):

find . -type f -mmin +10 -daystart -mtime -1 -exec ls -lrt {} +

请注意,我们指定-mmin +10 before -daystart是相对于当前时间,但指定-mtime -1 after -daystart是相对于一天的开始。

请注意,如果每个 的实例只传递一个文件名+,则;--没有任何意义,因为对大小为 1 的列表进行排序总是会返回完全相同的列表。请参阅BashFAQ #3以讨论更健壮和可靠的方法来按时间对从 GNU 返回的文件列表进行排序。ls -tlsfind

于 2017-02-24T22:30:32.983 回答
2

由于您需要在过去 10 分钟或更短时间内修改过的文件,因此您需要传递-10-mtime参数,而不是+10

find . -maxdepth 1 -type f -daystart -mmin -10 -exec ls -lrt {} \;

请参阅此页面:

于 2017-02-23T20:40:13.943 回答