【发布时间】:2022-01-03 20:26:08
【问题描述】:
我们正在迁移我们的 FTP,我只想迁移其中包含在过去 6 个月内使用/写入的文件的文件夹。我认为这将是我在 google 上到处都能找到的东西,但我发现的所有脚本都有相同的致命缺陷。
我发现的所有内容似乎都取决于文件夹的“修改日期”。问题是,我有很多文件夹显示几年前的“修改日期”,但是当你深入研究它时,有一些文件直到今天才被创建和写入。
示例: D:/Weblogs 可能显示修改日期为 2018 年 1 月 1 日,但是,当您深入研究它时,有一个名为“Log6”的文件夹 idk,比方说,该文件夹中有一个日志文件被修改为最近和昨天。
我看到的所有这些脚本都会拉取顶部文件夹的修改日期,这似乎并不准确。
有没有办法解决这个问题?我会期待类似的东西 获取某个顶层的所有文件夹,然后通过这些文件夹的 CONTENTS 查找具有 datemodified -lt adddays(-180) 过滤器的文件。如果找到“新”的内容,则不要将总体目录添加到数组中,但如果没有,则列出该目录。
有什么想法吗?
编辑:我试过了
$path = <some dir>
gci -path $path -Directory where-object {LastWriteTime -lt (get-date).addmonths(-6))}
和
$filter = {$_.LastWriteTime -lt (Get-Date).AddDays(-180)}
#$OldStuff = gci "D:\FTP\BELAMIINC" -file | Where-Object $filter
$OldFolders = gci "D:\FTP\BELAMIINC" -Directory | ForEach-Object {
gci "D:\FTP\BELAMIINC" -file | Where-Object $filter
}
Write-Host $OldFolders
【问题讨论】:
-
目录的修改日期并不是其中文件修改日期的可靠指南。您确实需要比较文件时间,而不是目录时间。
-
用我尝试过的方法编辑了我的帖子。
标签: windows bash powershell file