我有一个备份文件夹,它使用类似日历的文件夹结构来组织文件。我想每 5 天删除一次这些文件,但最终我删除了完整备份,因为主文件夹的保存时间已超过 5 天。
文件夹结构:
Backup
-> 2017
-> October
-> 28
-> 29
-> 30
-> 31
-> November
-> 1
-> 2
-> 3
我试过运行这个命令:
find /mnt/backup/* -type d -mtime +5 -execdir rm -rf {} \;
但是它将删除目录 2017,因为它已超过 5 天,这反过来意味着它将删除所有子文件夹。我只想删除其中已超过 5 天的目录。例如,如果今天是 11 月 3 日,我只想删除目录 28 和 29。然后当它变成 11 月 5 日时,我希望删除整个 10 月目录,因为其中的所有内容现在都已超过 5 天。有什么建议吗?
谢谢
答案1
-mindepth 1
如果你不想2017
被触摸,请使用:
$ mkdir -p foo/2017/{October/{28..31},November/{1..3}}
$ touch -d 'now - 6 days' foo/2017/October/{28,29} foo/2017
$ find foo/* -mindepth 1 -mtime +5
foo/2017/October/28
foo/2017/October/29
$ find foo/* -mtime +5
foo/2017
foo/2017/October/28
foo/2017/October/29
foo
如果从而不是开始foo/2017
,则使用-mindepth 2
:
$ find foo/ -mindepth 2 -mtime +5
foo/2017/October/28
foo/2017/October/29