Come rimuovere i file modificati tra date particolari?


12

Come nell'argomento: vorrei rimuovere i file in una directory che sono stati modificati in un determinato intervallo di date. Come posso fare questo ?

Risposte:


18

Il comando GNU findè la strada da percorrere. Ad esempio, per eliminare tutti i file nella directory corrente tra l'1 e il 5 agosto, è possibile utilizzare il comando seguente

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

È meglio eseguire il comando senza l' -deleteazione, in primo luogo, per visualizzare l'elenco dei file interessati (un buon sostituto potrebbe essere -lsquello di produrre un elenco simile a ls).

La rimozione delle -maxdepth 1specifiche attraverserà anche tutte le sottodirectory.

È anche possibile specificare ore, ad esempio

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Attenzione a non rimuovere le virgolette singole, che proteggono gli spazi tra la data e l'ora.

Il personaggio !è una negazione, va letto: più recente di questa data ma non più recente di questa altra data.


Grazie per la risposta. Posso usare anche qualcosa per scegliere l'intervallo di ore? E qual è il "!" usato per ?
Patryk,

Il !non è. In questo esempio: non più recente del 2011-08-06.
con-f-use

@lordmonkey: vedi la mia modifica nella risposta
enzotib

3
+1. Non sapevo cancellare il predicato. Forse non è necessario, ma aggiungerò -type f.
Michał Šrajer,

@ Michał Šrajer: buoni consigli per -type f, me lo dimentico. Il -deleteè un'estensioni GNU, credo.
enzotib,
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.