web-dev-qa-db-fra.com

Supprimer des fichiers antérieurs à une date spécifique sous Linux

J'ai utilisé la commande ci-dessous pour supprimer des fichiers de plus d'un an.

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

Mais maintenant, je veux supprimer tous les fichiers dont l'heure modifiée est antérieure au 01 janvier 2014

Comment le faire sous linux.

22
VRK

Vous pouvez toucher votre horodatage en tant que fichier et l'utiliser comme point de référence:

par exemple. pour le 1er janvier 2014:

touch -t 201401010000 /tmp/2014-Jan-01-0000

find /path -type f ! -newer /tmp/2014-Jan-01-0000 | xargs rm -rf 

cela fonctionne parce que find a un -newer commutateur que nous utilisons.

De man find:

-newer file
       File  was  modified  more  recently than file.  If file is a symbolic
       link and the -H option or the -L option is in effect, the modification time of the 
       file it points to is always used.
19
user559633

Cela fonctionne pour moi:

find /path ! -newermt "YYYY-MM-DD HH:MM:SS" | xargs rm -rf
26
Paul Spaulding
find ~ -type f ! -atime 4|xargs ls -lrt

Cela répertoriera les fichiers auxquels vous avez accédé plus de 4 jours, en recherchant à partir du répertoire personnel.

1
bunty

La réponse acceptée pollue le système de fichiers et se retrouve à supprimer. nous n'avons donc pas à diriger les résultats vers xargs, puis à émettre un rm. Cette réponse est plus efficace

find /path -type f -not -newermt "YYYY:MM:DD HH:MI:SS" -delete
1
yoga