Elimina file più vecchi di un anno su Linux


18

Al momento, molti file sono ancora sul mio sistema e non ne ho più bisogno, quindi come eliminare tutti i file che hanno almeno un anno?

Risposte:


34

Puoi farlo con questo comando

find /path/to/files* -mtime +365 -exec rm {} \;

Alcuni spiegano

/path/to/files* è il percorso dei file.

-mtimeviene utilizzato per specificare il numero di giorni precedenti al file. +365 troverà file più vecchi di 365 giorni, ovvero un anno

-exec ti permette di passare un comando come rm.


Modifica Grazie alla nota @Oli -> puoi farlo:

find /path/to/files* -mtime +365 -delete

7
Dovresti sempre citare il {}in -exec(così si legge -exec rm "{}" \;). Questo assicura che gli spazi siano gestiti correttamente ... E puoi semplicemente usare la -deletefunzione invece di -exec.
Oli

1
@Oli Huh ??? (Quello che hai detto non può essere giusto, se si considera che i giri di shell "{}"in {}prima di passarlo al find, in primo luogo, poi findsostituti per esso preventivi. {}È suggerito nel caso {e }si possono a volte essere trattati in maniera particolare dalla shell - che non ha nulla a fare con spazi vuoti. E spesso {}non c'è bisogno di essere citato. Non riesco a pensare a nessuna situazione, almeno quando invoco il ritrovamento da una shell in stile Bourne, quando {}, senza nulla all'interno, che appare da solo come argomento, sarebbe deve essere citato. Puoi?)
Eliah Kagan,

1
@EliahKagan Sì, risulta che le findmaniglie scappano da sole, ma non è una cattiva abitudine stare durante lo scripting. Non fa male.
Oli

2
@Oli Ma non aiuta, neanche in linea di principio. Se findnon gestisse l'escaping, "{}"avrebbe comunque lo stesso effetto di - {}solo nessuno dei due avrebbe funzionato, invece di funzionare entrambi. Questo {}e "{}"comportarsi allo stesso modo non è - e non può essere - a causa di qualsiasi caratteristica speciale di find. Confondere ciò che viene espanso dalla shell con ciò che viene espanso da qualche altro programma è una cattiva abitudine. Tutti commettiamo questo errore di tanto in tanto, ma è comunque un errore, non una buona pratica. (Si potrebbe ancora citare {}per aiutare gli umani a vedere che non è un modello per l'espansione del tutore, ma non è correlato alla divisione delle parole.)
Eliah Kagan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.