Eventuali duplicati:
Delete all but the most recent X files in bashcomando bash per eliminare tutti, ma ultimi 5 directory
Ho uno script per creare backup incrementali giornalieri e ho bisogno di eliminare tutti i backup, ma lo scorso 5.
Per esempio, io ho questo cartelle:
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
E devo mantenere solo le ultime 5 directory e cancellare le altre. Dopo il comando eseguire, ho bisogno di avere solo questo:
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
Non ho bisogno di cancellare precedente a 5 giorni, ho bisogno di eliminare tutti tranne 5 ultimi directory :)
Ora sto usando :
find /backup/increment -maxdepth 1 -type d -mtime +5 -exec rm -rf {} \;
Ma ho bisogno di migliorato non basato in tempo :)
EDIT: Questo è un esempio per un server che esegue backup tutti i giorni, ma ho bisogno di uno script che cancelli tutte le cartelle precedenti all'ultima 5 perché il mio computer fa i backup alle 00:10 di notte, ma non tutte le notti il backup è fatto, perché il mio computer non funziona tutti i giorni, e ho bisogno di avere sempre le ultime 5 copie di backup :)
Se non è "basata nel tempo", qual è la sua definizione di "ultima 5"? –
@dogbane grazie ma la soluzione @MartinStettner sembra essere una soluzione più elegante :) – Lito
@David Aggiunto un commento nel post principale. – Lito