可能重複:
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