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

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

是否可以找到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

令人烦恼的是,标准没有任何直接的方法findfindGNU 系统(例如非嵌入式 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\

注意:在第二个命令末尾添加空格。在命令行上进行交互式搜索时,文件与目录混合不会出现问题。

相关内容