Eli*_*iar 21 command-line find date
是否可以php
在某个目录中找到在某个日期被修改的所有文件
我正在使用
find /var/www/html/dir/ -mtime -28 | grep '\.php'
Run Code Online (Sandbox Code Playgroud)
获取在过去 28 天内修改的文件,但我只需要在以下日期修改的文件: 2011-02-08
dog*_*ane 25
在最新版本find
(例如 GNU 4.4.0)上,您可以使用该-newermt
选项。例如,在 2011-02-08 上查找所有已修改的文件
$ find /var/www/html/dir/ -type f -name "*.php" -newermt 2011-02-08 ! -newermt 2011-02-09
Run Code Online (Sandbox Code Playgroud)
另请注意,您不需要通过管道输入 grep 来查找 php 文件,因为 find 可以在-name
选项中为您执行此操作。
查看此 SO 答案以获取更多建议:如何使用“查找”来搜索在特定日期创建的文件?
令人讨厌的是,标准没有任何直接的方法find
。最新版本的find
GNU 系统(例如非嵌入式 Linux、Cygwin)和一些 *BSD 具有诸如-newermt
将文件日期与拼写日期进行比较的选项。
使用标准find
,您所能做的就是将文件日期与当前日期 ( -mtime
) 或固定文件进行比较。在这种情况下,当前日期通常没有用(它从您运行find
命令的时间开始计算,而大多数应用程序需要日历日期)。这让您不得不创建临时文件来定义范围。
touch -t 201103070000 start.tmp
touch -t 201103080000 stop.tmp
find . -newer start.tmp \! -newer stop.tmp -print
rm start.tmp stop.tmp
Run Code Online (Sandbox Code Playgroud)