我一直遇到一个问题,同样的文件一直出现在我的 Google Drive > 最近列表的顶部(https://drive.google.com/drive/recent),尽管我已经多年没有修改过甚至打开过它们。这使得“最近”列表变得毫无用处,因为它总是在顶部显示旧文件。
进一步检查“详细信息”窗格(快捷方式d
),发现这些文件的修改日期是未来的 2038 年!
为什么会发生这种情况?我该如何修复它以使“最近”列表再次有用?
答案1
原因:
不知何故,这些文件的日期时间戳被损坏,并且修改或创建日期时间戳是未来的(通常是 2038 年)。因此,当 Google Drive 按日期降序对最近文件进行排序时,这些损坏的文件总是显示在顶部。
解决方案:
在同步这些文件的计算机上:
将文件移动到 Google Drive 目录之外的目录,这样文件就会从 Google Drive 云中删除。等待同步完成删除文件。
将这些文件的修改、创建和访问日期时间戳更改为非未来日期。(详细步骤见下文。)
将文件移回 Google Drive 目录,以便文件再次重新上传到 Google Drive 云。等待同步完成文件上传。
再次重新加载 Google Drive > 最近列表,以验证修改日期不再是将来的日期。
更改 Windows 上的日期时间戳:
2a. 将文件移动到 Google Drive 之外的目录后,在该目录中打开 powershell 窗口。
2b. (可选)列出具有未来日期的文件。
ls * | where { ($_.LastWriteTime -gt (get-date)) -or ($_.CreationTime -gt (get-date)) -or ($_.LastAccessTime -gt (get-date)) } | select LastWriteTime, CreationTime, LastAccessTime, Name
2c. 设置所需的日期时间戳(将日期替换为您想要的日期)。
ls * | foreach { $_.LastWriteTime = (Get-Date "12/31/2016"); $_.CreationTime = $_.LastWriteTime; $_.LastAccessTime = $_.LastWriteTime}
2d. 确认不再有文件具有未来日期。
ls * | where { ($_.LastWriteTime -gt (get-date)) -or ($_.CreationTime -gt (get-date)) -or ($_.LastAccessTime -gt (get-date)) } | select LastWriteTime, CreationTime, LastAccessTime, Name
在 Mac 上更改日期时间戳:
2a. 将文件移动到 Google Drive 之外的目录后,在该目录中打开终端窗口。
2b. 设置所需的日期时间戳(使用格式 YYYYMMDDhhmm):
touch -t 201612310000 *
2c. 确认日期看起来不错。第一个日期是修改日期,应该与您上面设置的日期一致。其他 3 个日期是出生/创建日期、更改日期、访问日期,可能与修改日期不一致,但请确保它们不在未来。
stat -f "%Sm | %SB | %Sc | %Sa | %N" -t "%Y-%m-%d %H:%M:%S" *
答案2
基于 wisbucky 的回答。如果您仅在网络上访问并且无法访问 Google Drive 的桌面客户端,则可以使用以下解决方法:
- 在最近的活动提要中选择带有未来标记的麻烦文件
- 将它们下载为 zip 文件并确认已下载 zip 文件
- 删除文件
- 重新上传 zip 文件
您需要稍后解压缩,但这是一个快速而肮脏的技巧,可以删除无效的未来时间戳文件,同时将原始内容保留在新的 zip 中。