可能重复:
Delete all but the most recent X files in bashbash命令删除所有,但最后5个目录
我有一个脚本每天创建增量备份,我需要删除所有备份,但最后5。
例如,我有这个文件夹:
drwxr-xr-x 4 root root 4096 Oct 29 01:10 2010-10-29 drwxr-xr-x 4 root root 4096 Oct 30 01:10 2010-10-30 drwxr-xr-x 4 root root 4096 Oct 31 01:10 2010-10-31 drwxr-xr-x 4 root root 4096 Nov 1 01:10 2010-11-01 drwxr-xr-x 4 root root 4096 Nov 2 01:10 2010-11-02 drwxr-xr-x 4 root root 4096 Nov 3 01:10 2010-11-03 drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08
而我只需要维护最后5个目录并删除其他目录。命令执行后,我需要有仅此:
drwxr-xr-x 4 root root 4096 Nov 4 01:10 2010-11-04 drwxr-xr-x 4 root root 4096 Nov 5 01:10 2010-11-05 drwxr-xr-x 4 root root 4096 Nov 6 01:10 2010-11-06 drwxr-xr-x 4 root root 4096 Nov 7 01:10 2010-11-07 drwxr-xr-x 4 root root 4096 Nov 8 01:10 2010-11-08
我不需要删除以前的5天,我需要删除所有除最后5个目录:)
现在我使用:
find /backup/increment -maxdepth 1 -type d -mtime +5 -exec rm -rf {} \;
但我需要改善不是基于时间:)
编辑:这是整天进行备份的服务器的示例,但我需要一个脚本来删除最后5个之前的所有文件夹,因为我的计算机在晚上以00:10执行备份,但不是所有晚上的备份都完成了,因为我的电脑坏了所有的日子,我需要总是最后5个备份:)
如果它不是“基于时间”,什么是你的“最后5”的定义? – 2010-11-08 18:50:34
@dogbane谢谢,但@MartinStettner解决方案似乎是更优雅的解决方案:) – Lito 2010-11-09 09:40:26
@David在主帖中添加了评论。 – Lito 2010-11-09 13:23:54