是否可以找到php
某个目录中在某个日期修改过的所有文件
我在用着
find /var/www/html/dir/ -mtime -28 | grep '\.php'
获取过去 28 天内修改的文件,但我只需要在以下日期修改的文件:2011-02-08
答案1
在最新版本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
另请注意,您不需要通过管道输入 grep 来查找 php 文件,因为 find 可以在选项中为您执行此-name
操作。
看看这个SO答案以获得更多建议:如何使用“查找”来搜索在特定日期创建的文件?
答案2
令人烦恼的是,标准没有任何直接的方法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
答案3
与zsh
你可以使用功能age
仅打印在特定日期修改过的文件的名称:
自动加载年龄 print -rl -- *.php(.e:年龄 2011/02/08:)
或者,如果您想递归搜索:
自动加载年龄 打印 -rl -- **/*.php(.e:年龄 2011/02/08:)
答案4
在大多数情况下,我使用基本命令:
ls -l | grep 2017 | grep Apr\ 11
ls -l | grep 2017 | grep Apr\ 1\
注意:在第二个命令末尾添加空格。在命令行上进行交互式搜索时,文件与目录混合不会出现问题。