如何在巨大的文件夹中仅搜索一年中选定月份的文件?

如何在巨大的文件夹中仅搜索一年中选定月份的文件?

我有一个文件夹,里面有 30 GB 的媒体文件。我花了几个小时按“日期”对它们进行排序,然后将它们拆分到“年份_月份”的新文件夹中。如何在大量文件列表中搜索/过滤出一年中选定的月份?

回复回答者

回复添加库的答案:

在文件资源管理器中显示库

要在文件资源管理器中显示库,请选择“视图”选项卡,然后选择“导航窗格”>“显示库”。

如果我按图书馆的天数安排:

在此处输入图片描述

我在库的“基准”列中仅看到相同的日期 05.08.2023:

在此处输入图片描述

但我发现备份文件夹中也有相同的错误日期,因此,该库不可能比数据中的更好:

在此处输入图片描述

尽管我有一个来自 Ask Different Stack Exchange 的旧截图为什么我必须多次重试复制并出现许多错误才能将数 GB 的图像和视频文件从 iPhone 7 移动到 Windows PC?(这让我在这里问了这个问题)

您会看到 HEIC 数据中包含其他日期:

在此处输入图片描述

但如果我现在检查相同的数据,您会发现我无法再在文件列表中找到 HEIC 图像,可能是因为我将它们移到了正确的月份。无论如何,如果只有 05.08.2023,则库中也只能显示此日期,如果 HEIC 文件丢失,那是我的错

虽然 Windows 上显示的 iPhone 文件夹中的“Datum”列中包含真实日期,但再次查看相同的文件:

在此处输入图片描述

这意味着备份已经覆盖了日期,并且通过选择“按月排列”进行快速索引排序的库技巧应该有效。这就是我接受它的原因。

答案1

如果文件夹已编入索引,您可以从该文件夹中创建新库。尽管许多人忽略了库,但它们提供了Arrange by >背景上下文菜单的功能,这些功能通常提供您需要的所有搜索功能。

不同的库类型或模板提供不同的Arrange by >选项。根据您的需要,即使您的文件是媒体,也可以使用Pictures模板,因为它提供Month并显示每个月/年组的“堆栈”(虚拟文件夹),如以下屏幕截图所示:

在此处输入图片描述

然后,要复制/移动文件,双击一个堆栈将其打开,ctrl+A选择全部,然后根据需要复制/移动。


编辑:Arrange by >选项因库类型而异,与 FolderTypes 类似。如果您没有看到选项:

  • Month
  • Day
  • Rating
  • Tag 那么你的图库就没有针对图片进行优化。你可以通过图库Properties对话框进行更改:

在此处输入图片描述

如果正如我所怀疑的那样,这Datum相当于Date英语版本的探索者。这是一个相当独特的属性,因为它既不是文件系统属性也不Date TakenExif 元数据存储在文件中,而是由文件类型以及文件中是否存在元数据决定的动态属性。请参阅我的回答这里更多信息。正如该答案中的链接文档所示,完整属性名称是System.ItemDate,并且与库优化用于Pictues按月堆叠的属性相同:

在此处输入图片描述



编辑:故障排除


将此代码复制并粘贴到电源外壳返回窗口规范名称在一个或多个打开的探索者视窗:

@((New-Object -Com shell.application).Windows()).ForEach{ Echo ('{0}Window Title   :{1,30}{0}Sort Column(s) :{2,30}{0}' -f "`n`t", $_.LocationName, $_.Document.SortColumns)}

输出:

PS C:\> @((New-Object -Com shell.application).Windows()).ForEach{ Echo ('{0}Window Title   :{1,30}{0}Sort Column(s) :{2,30}{0}' -f "`n`t", $_.LocationName, $_.Document.SortColumns)}

        Window Title   :                      Pictures
        Sort Column(s) :        prop:-System.ItemDate;

PS C:\>

执行图片文件夹中的代码,然后导航到库后再次执行。属性是否相同???

答案2

使用 [field:month year] 模式进行搜索(仅适用于小样本)

打开包含要过滤的文件的文件夹。在右上角的搜索框中,输入您的系统语言,格式如下:

[column name]:[month in letters] [year]

德语示例:

  • 2023 年 1 月 / 2023 年 1 月
  • 2023 年 2 月 / 2023 年 2 月
  • 2023 年 3 月
  • 2023 年 4 月 / 2023 年 4 月
  • ...

品牌:

在此处输入图片描述

在搜索菜单中,您可以找到更多模式,例如本月、上个月等等,如果单击它们,您还会在搜索框中看到它们的代码,可以进一步进行调整:

在此处输入图片描述

这样您就可以点击“Änderungsdatum: letzten Monat”,即上个月的“更改日期”(意味着不是一个月份的倒数,而是上一个日历月):

在此处输入图片描述

而且由于我需要它用于“更改日期”以外的其他字段/列,因此我可以将其更改为“基准”列:

在此处输入图片描述

这似乎不适用于大型文件列表

奇怪的是,这似乎并不适用于所有文件,因为我对“2023 年 8 月”的过滤器及其输出(我将其移动到“202308”文件夹)如下所示:

在此处输入图片描述

从该屏幕截图的几个示例图像可以看出,我仍然找到了其他月份的其他图像,事实证明这些是全部HEIC 和一些 JPG 图像(12000 张中的 11500 张)。再次在这个“202308”文件夹中进行过滤,我只得到“2023 年 8 月”的图像,因此,过滤器在搜索输出中以某种方式起作用,所以当将那个巨大且可能未完全加载的搜索输出移动到新文件夹时,它可能不起作用?!
然后我想,当我不按 时,我可能只捕获“datum:aug 2023”文件Ctrl+A,而是标记该搜索输出中的第一个到最后一个文件,然后才移动它们。但在测试中,当仅标记搜索输出的过滤文件时,标记的文件数量与整个文件夹中的文件数量相同,因此,您似乎标记了全部该文件夹中的文件,即使其搜索输出必须文件较少(因为我确信其中并非所有文件都是“2023 年 8 月”)。遗憾的是,这意味着搜索过滤器不能用于将所选月份与其他月份区分开。因此,这个答案对于大文件夹来说不够,它只适用于较小的文件夹。
我继续过滤掉其他月份并将它们移到它们自己的 year_month 文件夹中,但由于我把所有 HEIC 文件都放在了那个“202308”文件夹中,所以我没有找到任何 HEIC 图像。过滤器只找到了几个 MOV 和 JPG 文件:

在此处输入图片描述

我还是继续移动那些可以找到的文件,这样大文件夹的大小至少会缩小一点。现在,我仍然需要按“数据”对剩余的 11500 个文件进行排序,这将花费数小时。奇怪的错误。

因此,我仍然没有找到从这个大文件列表中过滤掉那些月份的 HEIC 和其他图像的方法,一个文件夹中的约 12000 个文件中仍然有约 11500 个 HEIC/PNG/JPG 图像。

按文件名拆分

因为我有一个文件夹,里面合并了我所有 iPhone 的月度文件夹,而且名称中有很多重复项,所以我将每个带有“(2)”的文件移动到了一个新文件夹中,然后继续使用类似的标记,因此,首先按名称进行拆分,然后按日期列对较小的样本(当时只有 1300 个文件)进行排序:

在此处输入图片描述

这很有效,排序不再花费很长时间,然后我可以将这些文件拆分到它们的每月子文件夹中。

将 1000-2000 个文件的小样本移动到另一个文件夹

但是,如果您没有类似名称的东西来实现这一点,那么处理此问题的唯一方法是随机抽取几千个或更多文件,按日期对它们进行排序,将它们拆分到文件夹中,然后继续下一个样本。这就是我最终得到的结果,也许你应该从这个开始,因为它完成得相当快,即使你必须将文件移动到每月文件夹中数十次。至少,计算机可以处理它。

编程

我使用 Python 处理文件已经很多次了,有了 pathlib 库,应该可以轻松读取“数据”并将其移动到 year_month 文件夹,而无需手动执行任何操作。我没有花时间,但应该比将文件移动到正确的月份文件夹中数百次更好。

相关内容