在 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 -1
、after -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。
我试图在 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 -1
、after -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。