获取在特定日期修改过的所有文件

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 答案以获取更多建议:如何使用“查找”来搜索在特定日期创建的文件?


Gil*_*il' 6

令人讨厌的是,标准没有任何直接的方法find。最新版本的findGNU 系统(例如非嵌入式 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)