如何删除所有超过 x 天的“内容”(目录和文件)?

如何删除所有超过 x 天的“内容”(目录和文件)?

我知道find -mtime +x -delete,但如何使用它 - 或在脚本中使用它 - 以便删除所有“旧内容”(包括隐藏文件)?例如,如果我有一个目录target_dir

  • 删除target_dir任何深层内容在 X 天内未发生更改的所有文件夹和子文件夹(即删除旧目录树分支)
  • target_dir删除X 天内未更改的所有文件

编辑: 相关这个话题但接受的答案并没有真正起作用,因为通过首先删除文件,我们“更新”旧目录的修改日期,以便它们不会在第二步中删除......也不确定可能的隐藏文件/目录。 。

答案1

经过多次测试,我发现最简单的方法就是简单地使用:

find /path/to/dir -mtime +30 -delete

这些删除了除具有更新内容的分支之外的所有内容。

但请注意,同时: (a) 这是行不通的:find /path/to/dir/* -mtime +30 -delete; (b) 如果/path/to/dir仅包含旧内容并且尚未自行更新,则它将自行删除。

因此,我想保留该目录的方法是运行第一个find命令,然后检查该目录是否仍然存在,如果不存在,我重新创建它。

相关内容