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 ?

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.