Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Suppression de fichiers vieux de 3 mois
Envoyé par: cancerus

Bonjour,

J'ai déjà une piste pour résoudre le problème mais j'aimerais savoir s'il est possible de l'affiner.

Je veux purger des fichiers qui ont plus de 3 mois dans un répertoire.
Voici la commande que j'emploie habituellement:

find ${REP_ARCHIVE} -type f -mtime +${NB_SAV} \( -name '*.txt' \) -exec rm -f {} \;

où REP_ARCHIVE correspond au répertoire... d'archive;-)
et NB_SAV au nombre de jours de sauvegarde.

Vous allez me dire que c'est très simple et qu'il suffit de positionner NB_SAV=90 (3 mois étant à peu près égaux à 90 jours). Sauf que je cherche une ligne de commande qui me permettent de supprimer les fichiers au bout de 3 mois très exactement. Disons le 1° de chaque mois, je purge et je n'ai pas le droit à la crontab...

D'avance merci pour votre aide.

Poste le Thursday 23 June 2005 18:16:36
Répondre     Citer    
Re: Suppression de fichiers vieux de 3 mois

NB_SAV=$( echo "( $(date +%s) - $(date -d '3 month ago' +%s ) )/ 86400" |bc )

--
Brugmans Frédéric

[www.brugmans.net]
[triathlon.sport-challenge.be]

Poste le Friday 24 June 2005 08:03:34
Répondre     Citer    
Re: Suppression de fichiers vieux de 3 mois
Envoyé par: cancerus

Merci Frédéric,

juste un petit problème, je suis sous Unix et, à la lecture du mman et à l'exécution de tacommande, il semblerait que l'option -d n'existe pas sur l'OS que j'utilise.

Mais je vais essayer de chercher dans cette direstion là.

Poste le Friday 24 June 2005 11:22:15
Répondre     Citer    
Re: Suppression de fichiers vieux de 3 mois
Envoyé par: cancerus

Bonjour,

Je reviens à la charge avec mon problème.
J'ai eu une autre idée mais, niveau mise en oeuvre, je bloque.

Mes fichiers sont horodatés:
DATA_072005.csv

Je pensais récupérer le 072005 par un cut et comparer au mois courant `date +"%m"`. En faisant un traitement si le mois est supérieur à 12 ou inférieur à 3.

Qu'en pensez-vous ? Et avez-vous un solution pour la comparaison ?
D'avance merci.

Poste le Monday 4 July 2005 09:31:07
Répondre     Citer    
Re: Suppression de fichiers vieux de 3 mois
Envoyé par: Sve@r

Pas de pb

#!/bin/sh
# Récupération du mois courant
mois=`date '+%m'`

# Revenir de 3 mois en arrière
if test $mois -ge 3
then
____mois=`expr $mois - 3`
else
____mois=`expr $mois + 9`
fi

# Boucle sur tous les fichiers
for file in *
do
____# Couper le nom du fichier et récupérer son mois
____# compar=`echo $file |cut -d_ -f2 |cut -c1,2`

____# Vérifier le mois par rapport au mois calculé
____if test $compar -le $mois
____then
________# Ce fichier est plus vieux que 3 mois - A toi de jouer ici
____fi
done

J'ai considéré que, dans "DATA_072005.csv" le mois était "07" (parce que le mois "20" ça m'a choqué)
Si le mois est en position 3 et 4, alors remplace "cut -c1,2" par "cut -c3,4"

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Monday 4 July 2005 23:02:42
Répondre     Citer    
Re: Suppression de fichiers vieux de 3 mois
Envoyé par: cancerus

Super !!!
Merci Sve@r :-)

Poste le Tuesday 5 July 2005 14:49:38
Répondre     Citer    
Re: Suppression de fichiers vieux de 3 mois
Envoyé par: Sve@r

Heu... petite erreur dans la partie "revenir 3 mois en arrière"
Au lieu de: "if test $mois -ge 3"
Ecrire "if test $mois -gt 3"

En effet, "ge" signifie "plus grand ou égal". Cela veut dire que si "mois" vaut "3", on aurait en fin d'opération "mois=0" ce qui est idiot
"gt" veut dire "plus grand" donc si "mois" vaut "3", l'algo calcule "mois=mois + 9" et en fin d'opération, on a "mois" qui vaut "12"



L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Poste le Tuesday 5 July 2005 18:05:52
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Suppression de fichiers vieux de 3 mois
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons