在 linux-bash 中查找不使用 -mtime 和 -daystart 参数的命令

Find command not working with -mtime and -daystart parameter in linux-bash

我试图在 find 命令中找到 10 分钟前创建的文件,并使用 -daystart 参数(即 created/modified 超过 10 分钟但少于 daystart) , 但 -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

由于您需要在过去 10 分钟内修改过的文件或 less,因此您需要将 -10 传递给 -mtime 参数,而不是 +10:

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

查看此页面:

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

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

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

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

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