我想通过识别和删除“死木”,即很长时间(比如说,超过 2 年)未使用的文件,来在我的 OS X 硬盘中腾出空间。
是否有一个通用的工具可以识别旧的、未使用的文件?
(注 1:我知道一种用于删除本地化文件的工具,但我正在寻找比这更通用的工具。同样,我知道用于识别大文件的工具,但这不是我目前正在寻找的。)
(注 2:我对自动删除所找到的旧的、未使用的文件的工具不感兴趣;我希望能够扫描候选文件列表,并删除我想要保留的任何文件,尽管它们已经旧的且不活跃。)
谢谢!
答案1
使用 mdfind (Spotlight)
由于 OS X 使用 Spotlight 索引所有内容,因此您可以使用非常强大的命令行工具来查找所需内容:
mdfind -onlyin <directory> 'kMDItemLastUsedDate <= $time.today(-<days>)'
例如,会列出<directory>
您尚未打开的所有内容<days>
。当然,如果您想搜索整个系统,可以省略onlyin
。不过,我建议在特定目录中查找。
您可以使用以下方式修改此查询:
$time.this_week
$time.this_month
$time.this_year
当然,还要添加$time.this_week(-5)
,例如,如果您想要 5 周未打开的物品。或者,在您的情况下,使用$time.this_year(-2)
过去两年未使用过的物品。
您还可以访问其他属性:
kMDItemContentModificationDate
(修改时)kMDItemContentCreationDate
(创建时)
有一个您可以进行的其他查询数量。 看这里以获取其他属性的列表。
使用find
<directory>
几天前修改过的文件的简单列表<d>
:
find <directory> -type f -mtime +<d>
例如
find ~/Documents -type f -mtime +150
~/Documents
列出您至少 150 天未修改的所有文件。
mtime
是文件在读取时没有改变的 Unix 修改时间。相反,如果你想列出已修改的文件之内过去 150 天,您将使用-150
而不是+150
。
就像 一样mtime
,还有atime
,它指定最后访问时间。语法相同:
find ~/Documents -type f -atime +150
但我不太确定它是否太精确。至少在 OS X 上,Spotlight 似乎是更好的选择。
答案2
要在 Finder 中执行此操作,请选择要搜索的文件夹(例如您的主目录)并按Cmd-F
。
按住Option
并单击右侧的按钮(不按下时...
为按钮)+
Option
谓词编辑器(带有搜索条件的栏)。
选择没有任何其中说任何为新标准块,然后选择最后打开日期(可能是默认)或上次修改日期在下一行。然后,输入您想要的时间范围。它应该看起来像这样:
您不需要实际输入搜索表达式,它只会列出一段时间内未被修改的文件。
从 Finder 执行此操作的优点是可以非常轻松地添加其他条件以及对生成的文件进行排序和查看。
请参阅此答案,了解如何将尺寸列添加到 Spotlight 结果列表选择性删除旧的和大文件。
答案3
聚光灯。
输入您要删除的文件类型的通配符(或通用通配符),并添加属性“上次打开日期”。根据您的喜好进行设置。
请小心删除内容。