我有安装了 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-ChildItem
cmdlet 返回给定文件夹中的所有文件(如果需要,则递归),并且Where-Object
cmdlet 允许您过滤其他命令的输出。示例脚本(假设您要搜索的目录是当前目录):
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
带过滤器:
以某种方式命名过滤器,输入文件掩码,检查Date/Time
,选择值change
,取消选中Relative
并输入日期/时间范围:
答案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 中搜索的高级技巧, 以编程方式使用高级查询语法