[BASH] script per rimuovere file più vecchi di t minuti

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
DeN96
Prode Principiante
Messaggi: 15
Iscrizione: lunedì 19 marzo 2018, 15:32
Sesso: Maschile

[BASH] script per rimuovere file più vecchi di t minuti

Messaggio 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?
DeN96
Prode Principiante
Messaggi: 15
Iscrizione: lunedì 19 marzo 2018, 15:32
Sesso: Maschile

Re: [BASH] script per rimuovere file più vecchi di t minuti

Messaggio da DeN96 »

Risolto
Avatar utente
giulux
Amministratore
Amministratore
Messaggi: 25438
Iscrizione: domenica 10 gennaio 2010, 12:17
Desktop: ubuntu 18.04
Distribuzione: Ubuntu 18.04.3 LTS x86_64
Sesso: Maschile
Località: Roma

Re: [BASH] script per rimuovere file più vecchi di t minuti

Messaggio 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.
"Non è una segno di buona salute l'essere ben adattato ad una società malata". (Jiddu Krishnarmurti)
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4457
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [BASH] script per rimuovere file più vecchi di t minuti

Messaggio 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.
Salva l'Ucraina! 🇺🇦
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: [BASH] script per rimuovere file più vecchi di t minuti

Messaggio 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
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti