如何找到在特定时间段内发生变化的文件?

如何找到在特定时间段内发生变化的文件?

我有安装了 cygwin 的 Windows 7 机器。我在一个根文件夹中有多个包含文件的文件夹。我想查找时间戳在特定日期时间范围内的文件列表。

答案1

您可以将find命令与-newerXY选项一起使用。

man find

-更新XY参考
将当前文件的时间戳与参考。 这参考参数通常是文件的名称(并且它的一个时间戳用于比较)但它也可以是描述绝对时间的字符串。X是其他字母的占位符,这些字母选择属于哪个时间参考用于比较。

可能的值X如下面所述:

  • a - 当前文件的最后访问时间或参考
  • B - 当前文件的诞生时间或参考
  • c - 当前文件的最后一个 inode 状态更改时间或参考
  • m - 当前文件的最后修改时间或参考
  • 吨——参考是一个表示时间戳的字符串(不适用于X

X引用当前文件和参考,因此您需要使用“m”作为第一个字母(当前文件的修改日期),使用“t”作为第二个字母(以字符串形式传递的时间戳)。示例脚本:

find . -type f -newermt "2012-05-01" ! -newermt "2012-05-15"

这将查找在 2012 年 5 月 1 日至 15 日之间修改过的所有文件。!(逻辑NOT) 运算符反转其后参数的含义 - 如果-newerXY表示“X 比 Y 更新”,则! -newerXY表示“X 比 Y 旧”。


由于您使用的是 Windows,因此另一种选择是使用 Powershell。Get-ChildItemcmdlet 返回给定文件夹中的所有文件(如果需要,则递归),并且Where-Objectcmdlet 允许您过滤其他命令的输出。示例脚本(假设您要搜索的目录是当前目录):

Get-ChildItem -Recurse | Where-Object { $_.LastWriteTime -ge "2012-05-01" -and $_.LastWriteTime -le "2012-05-15" -and !$_.PSIsContainer }

这将返回 2012 年 5 月 1 日至 15 日之间修改的所有文件。您可以使用CreationTime而不是LastWriteTime来检查文件创建时间。!$_.PSIsContainer过滤器仅返回文件(PSIsContainer对于文件夹为真,感叹号再次是逻辑NOT运算符)。

答案2

您可以使用远程管理器Find File带过滤器:在此处输入图片描述

点击过滤按钮,然后按下Insert即可插入新过滤器:在此处输入图片描述

以某种方式命名过滤器,输入文件掩码,检查Date/Time,选择值change,取消选中Relative并输入日期/时间范围:在此处输入图片描述

点击确定,然后在 中Filters menu按下space选择过滤器(+应该出现在过滤器旁边):在此处输入图片描述

按回车键,然后点击Find在此处输入图片描述

搜索结果(此示例中为照片 - 口罩IMG_*.jpg- 日期范围为 2022 年 6 月):在此处输入图片描述

答案3

也可以使用 GUI 文件资源管理器查找该文件。以下是一些示例:

datemodified:2015-02-18 08:00..2015-02-18 13:00
datemodified:>2015-02-18 08:00
datemodified:<2015-02-18 08:00

还有一些进一步的阅读: 在 Windows 中搜索的高级技巧以编程方式使用高级查询语法

相关内容