Shell命令删除少于N天的文件夹

时间:2014-09-17 05:28:37

标签: linux bash shell removeall

这与this question

的问题/变异略有不同
  1. 删除所有按时创建的目录早于N天的目录。
  2. 不要考虑目录中的子目录/文件。
  3. 例如:

    drwxrwxr-x 6 test test 4096 Aug 26 14:42 2.1.6-SNAPSHOT_201408261440_1
    drwxrwxr-x 6 test test 4096 Sep  1 05:13 2.1.6-SNAPSHOT_201408281233_1
    drwxrwxr-x 6 test test 4096 Sep  1 10:06 2.1.6-SNAPSHOT_201409011001_1
    drwxrwxr-x 6 test test 4096 Sep  1 15:58 2.1.6-SNAPSHOT_201409011554_1
    drwxrwxr-x 6 test test 4096 Sep  2 15:11 2.2.0-SNAPSHOT_201409021508_1
    drwxrwxr-x 6 test test 4096 Sep  2 15:18 2.2.0-SNAPSHOT_201409021515_1
    drwxrwxr-x 6 test test 4096 Sep  5 13:05 2.2.0-SNAPSHOT_201409051303_1
    drwxrwxr-x 6 test test 4096 Sep  5 15:32 2.1.6-SNAPSHOT_201409051528_1
    drwxrwxr-x 6 test test 4096 Sep  8 11:54 2.1.6-SNAPSHOT_201409081152_1
    

    我应该能够删除此路径中创建时间早于N天的所有文件夹。内部文件夹可能有更新的文件/子目录是新的,没关系。

1 个答案:

答案 0 :(得分:3)

假设您要删除旧目录:

N=4
find . -type d -mtime +$N -exec rm -fr {} +

深度优先搜索将确保在包含子目录的目录之前删除子目录,但最终可能会在find查看之前更改目录上的修改时间,这意味着目录老了不再算老了。但是,相反,rm最终可能会尝试删除已删除的目录,但-f选项可确保此操作不会以错误报告结束。

您可能需要咨询Explaining find … -mtime command,了解有关+$N vs -$N vs $N(其中假设N包含数字)的含义的信息