如何使用命令删除“下载”中添加日期大于1年的所有文件?


12

我正在使用Mac。如何使用命令删除~/Downloads添加日期大于1年的所有文件?


1
您是专门在寻找终端命令,还是像自动化操作这样的东西就足够了?
杰里·W

1
“添加日期”是什么意思?添加到什么以及如何?
艾伦

1
@Allan在Finder中检查“查看>排列方式”或“查看选项”中可用的列;OS X跟踪将项目添加到文件夹的日期。
英里

@Miles-这些属性在bash中不可用,除非您安装XCode Dev工具和专门用于〜/ Downloads的OP,这是bash(或更一般而言,是shell)约定。
艾伦

Answers:


24

这是删除目录中超过一年的文件的相对简单的命令。例如,在终端中执行以下命令

find ~/Downloads/ -type f -mtime +365 -exec rm {} \;

将删除~/Downloads目录中超过一年的所有文件。

  • find 是搜索“东西”的命令

  • -type f告诉找到要查找的内容,在这种情况下为文件

  • -mtime +365 告诉您修改时间应大于365天

  • -exec rm {} 将每个“找到的”项目传递(执行)到命令 rm

我想做的是通过排除该-exec rm {} \;部分来进行测试,并确保获得正确的结果。确定后,我将其添加到其中以完成删除。

一个警告!这些文件不会添加到“垃圾箱”中。该命令会绕过垃圾箱并立即被删除,因此请谨慎使用。


更安全的方式...

(感谢用户lucasoldaini在下面的评论中)

如果要将文件移至“垃圾箱”,只需将其替换-exec rm {} \;-exec mv {} ~/.Trash \;

它们将保留在您的垃圾箱中,直到您下次清空它为止。

您可以通过查看其手册页来获取有关每个命令的更多信息:


6
除了使用之外rm,您还可以移动文件~/.Trash以防止它们被立即删除。
lucasoldaini

2
请注意,修改日期(此答案针对的日期)与添加日期不同。此外,Safari会将下载文件的修改日期设置为服务器提供的修改日期(如果可用),因此,即使昨天下载的文件的修改日期也可能超过一年。
英里

2
如果您有自制软件,则从现在开始Brew安装垃圾桶,而rm使用垃圾桶命令。
Kyslik '16

我根据@lucasoldaini的建议更新了答案,我更喜欢使用内置方法,而不要使用自制软件或MacPorts。
艾伦

1
我比我更喜欢您的解决方案。
杰里·W

10

如果要使用Automator,可以构建如下操作:

查找查找器项目-搜索下载-所有以下各项均正确:-创建日期不是最近365天。

获取选定的查找器项目

将Finder项目移到垃圾箱

方便的截图: 自动化动作


7

我选择的工具是Hazel,这是一种低成本的多功能软件,当文件和文件夹与您设置的某些规则匹配时,该文件就会对文件和文件夹进行处理。此规则将从文件夹Hämtadefiler中移出去年未添加的文件。由于它每天运行,因此与上面的命令行解决方案有所不同,因此它是一劳永逸的解决方案。 Hazel pref窗格的屏幕截图


这是最好的解决方案,因为它实际上使用“添加日期”而不是“修改日期”,这可能是不同的。可以寻找命令行解决方案kMDItemDateAddedmdls但我强烈建议使用Hazel解决方案。
TJ罗玛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.