Pagina 1 di 1
[BASH] script per rimuovere file più vecchi di t minuti
Inviato: lunedì 19 marzo 2018, 15:46
da DeN96
edit Carved Top:
Attenzione! Il comando in fondo al post è potenzialmente dannoso. Non copiatelo ne eseguitelo se non siete sicuri di come funzioni.
Ciao a tutti ho fatto uno script per rimuovere i file più vecchi di t minuti da una directory. L'unico problema è che se tutti i file della directory sono più vecchi di t minuti allora viene cancellata la directory e mi viene stampato un messaggio di errore della find che mi dice che non esiste la directory.
Il comando che uso è:
Codice: Seleziona tutto
find $DIRECTORY -type f,d -mmin +$2 -exec rm -R {} \;
Come posso fare per evitare che venga cancellata la directory?
Re: [BASH] script per rimuovere file più vecchi di t minuti
Inviato: lunedì 19 marzo 2018, 15:53
da DeN96
Risolto
Re: [BASH] script per rimuovere file più vecchi di t minuti
Inviato: lunedì 19 marzo 2018, 16:42
da giulux
Perchè la discussione possa essere utile ad altri con lo stesso problema dovresti spiegare come hai risolto e modificare il titolo del
primo post mettendoci
davanti [Risolto].
Se vuoi puoi installare
questo script che aggiunge un pulsante per mettere [Risolto] con un solo click.
Ciao.
P.S. ti ho corretto la formattazione del comando (clicca su
modifica del tuo post per vedere come va fatto): per comandi e listati vanno sempre usati i tag code (tasto Codice) in alto.
Re: [BASH] script per rimuovere file più vecchi di t minuti
Inviato: martedì 20 marzo 2018, 0:40
da UbuNuovo
L'utente ha scritto un comando a caso ed ha peggiorato la situazione mettendo 'risolto' senza spiegazioni.
Se non si vuole fare distinzione tra tipi di file non si mette '-type', altrimenti dopo '-type' si mette un solo tipo, in questo caso dovrebbe essere '-type f'.
Ha usato 'rm -R' a caso, rm ricorsivo cancella anche le directory.
In ogni caso non c'è bisogno di usare un programma esterno (rm), 'find' ha l'opzione '-delete'.
In pratica, il comando per eliminare file più vecchi di 3 minuti a partire dalla directory corrente (.) dovrebbe essere:
Attenzione:
il comando cancella irreparabilmente i file senza chiedere conferma.
Prima, provarlo senza '-delete' per avere la stampa dei file che verrebbero cancellati.
Re: [BASH] script per rimuovere file più vecchi di t minuti
Inviato: martedì 20 marzo 2018, 12:20
da vaeVictis
Concordo con UbuNuovo e "rilancio".
Gli utenti che leggono questa discussione facciano molta attenzione al comando nel primo messaggio.
Basta una svista nel copiare quel comando (che continene un errore di sintassi e in cui sono inserite due variabili a caso) e si possono fare danni.
FATE ATTENZIONE