• # utilise find

    Posté par  (site web personnel, Mastodon) . Évalué à 5.

    find /un/chemin/ -atime 7 -exec rm {} \;

    -atime : dernier acces
    -mtime : dernière modification du fichier

    Pour plus de détails lire la page de man de find.
    • [^] # Attention au "atime" !

      Posté par  . Évalué à 5.

      Si tu utilises "atime" au lieu de mtime, fais bien attention à ce que la partition dans laquelle tu vas opérer ne soit pas montée en "noatime" ! (visible entre parentheses quand on tape "mount", et dans le /etc/fstab)

      En effet, en "noatime", le kernel ne va alors plus mettre à jour la date d'accès dûe aux lectures (ça permet d'optimiser un peu, en évitant de faire des écritures à chaque lecture -- dans ce cas le système n'est plus Posix) et donc on ne sait plus si un fichier n'est effectivement plus utilisé.

      Ça n'a peut-être pas d'importance si par "vieux" tu veux dire "pas modifié", auquel cas le mtime suffirait.
  • # man find

    Posté par  . Évalué à 3.

    un truc genre :

    $ find . -type f -atime 7 -exec rm {} \;

    ?
    • [^] # Re: man find

      Posté par  (site web personnel) . Évalué à 6.

      find . -type f -atime +7 -exec rm {} \;
      (le + sert a mettre dans le lot les fichiers dont le dernier accès a + de 7jours, sinon tu devrait le lancer en cron chaque jour ;)
      • [^] # Re: man find

        Posté par  . Évalué à 2.

        Le $find . -type f -atime +7 -exec rm {} \;

        est parfait, merci à tous !

        Robby
        • [^] # Re: man find

          Posté par  . Évalué à 2.

          ... sauf que, si tu lances cette commande tous les jours (ou avec une fréquence inférieure à 7 jours), tu n'auras plus de fichiers dont le atime dépassera 7 jours (normal, puisque find modifie leur atime chaque fois qu'il est lancé).

          C'était juste une petite remarque pour t'éviter un piège classique ^^;

          Le mtime est plus fiable à priori, ou alors gère bien tes scripts. ;)
    • [^] # Re: man find

      Posté par  . Évalué à 1.

      Bonjour, ça marche bien votre commande mais j'ai un petit souci. En fait j'ai voulu adapter ce script afin de supprimer des répertoires.

      Je me positionne ds le repertoire a l'intérieur duquel je veux supprimer tous mes vieux répertoires, et je fais :

      find . -type d -mtime +15 -exec rmdir --ignore-fail-on-non-empty {} \;

      J'ai un message d'erreur :

      find: . a été modifié durant l'exécution de find


      Qq1 peut il m'aider ?

      merci

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.