如何删除在特定日期之间修改的文件?


12

就像在主题中一样:我想删除目录中在特定日期范围内已修改的文件。我怎样才能做到这一点 ?

Answers:


18

该命令GNU find是解决方法。例如,要删除8月1日至5日之间当前目录中的所有文件,可以使用以下命令

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

最好是不执行-delete操作就执行命令,首先要查看感兴趣的文件列表(一个很好的替代方法-ls是生成类似ls的列表)。

删除-maxdepth 1规范也将遍历所有子目录。

您还可以指定小时数,例如

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

警告不要删除单引号,以保护日期和时间之间的空格。

该字符!是一个否定词,应读为:该日期较新,但该日期新。


感谢您的回复。我还可以使用某些东西来选择小时数范围吗?什么是“!” 用于 ?
Patryk

!是没有。在此示例中:不比2011-08-06更新。
con-f-use

@lordmonkey:看看答案中的编辑内容
enzotib 2011年

3
+1。我不知道-删除谓词。也许不需要,但是我会补充-type f
2011年

@MichałŠrajer:的好提示-type f,我忘记了。-delete我认为这是GNU扩展。
enzotib
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.