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:

Codice: Seleziona tutto

find . -type f -mmin +3 -delete
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