Comment supprimer des fichiers modifiés entre des dates particulières?

12

Comme dans le sujet: je voudrais supprimer les fichiers d'un répertoire qui ont été modifiés dans une plage de dates particulière. Comment puis-je faire ceci ?

Patryk
la source

Réponses:

18

La commande GNU findest la voie à suivre. Par exemple, pour supprimer tous les fichiers du répertoire courant entre le 1er et le 5 août, vous pouvez utiliser la commande suivante

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

Il est préférable d'exécuter la commande sans l' -deleteaction, tout d'abord, pour voir la liste des fichiers intéressés (un bon substitut pourrait être de -lsproduire une liste de type ls).

La suppression de la -maxdepth 1spécification traversera également tous les sous-répertoires.

Vous pouvez également spécifier des heures, par exemple

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

Soyez averti de ne pas supprimer les guillemets simples, qui protègent les espaces entre la date et l'heure.

Le caractère !est une négation, il faut le lire: plus récent que cette date mais pas plus récent que cette autre date.

enzotib
la source
Merci pour votre réponse. Puis-je également utiliser quelque chose pour choisir la plage d'heures? Et quel est le '!' utilisé pour ?
Patryk
Ce !n'est pas le cas. Dans cet exemple: pas plus récent que 2011-08-06.
con-f-use
@lordmonkey: voir mon montage dans la réponse
enzotib
3
+1. Je ne savais pas - supprimer le prédicat. Ce n'est peut-être pas nécessaire, mais j'ajouterai -type f.
Michał Šrajer
@ Michał Šrajer: bons conseils pour -type f, j'oublie cela. C'est -deleteune extension GNU, je pense.
enzotib