Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Script qui traite une date
Envoyé par: Clawangel

Bonjour à tous!

Je suis actuellement en stage et j'ai besoin d'un coup de pouce.

Il faut que je fasse un script qui traite la date de la dernière modification d'un fichier. Je compare la date ensuite à celle du jour où l'on est. S'il y a une différence de 30 jours, le fichier est effacé. Dans le cas contraire il est gardé.

J'ai lu le tutoriel que propose lea sur le traitement de la date à l'aide de la commande 'stat'.
Il faut bien sur que la tâche soit automatisé. Je pense prendre 'cron' comme planificateur de tâche.
Comment faire? Un programme en C? quel est la commande en C sous linux qui traite la chaine date?

merci pour votre aide

Poste le Wednesday 23 February 2005 11:16:03
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: lloyds

perso je te conseillerais de faire ça en shell script ce sera plus simple.
pour recuperer le jour et le mois du fichier tu va faire un ls piper à un grep et ensuite pour recuperer la meme chsoe avec la commande date c encore plus simple tu utilise le formatage de date
genre:
date "+%e jour et %m mois" c juste un exemple amsi devrait te permettre de comprendre comment ça marche

--
Adolescent attardé et fier de l'être

Poste le Wednesday 23 February 2005 11:25:25
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: marc ferraton

lit juste le man de find , tu as besoin d'une seule ligne de commande pour çà ;-p

L'homme qui parlait à l'oreille des PC @#%!

Poste le Wednesday 23 February 2005 11:54:07
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: lloyds

je suis trop con j'avais pas pensé au find!!!!!!!!!!!!

--
Adolescent attardé et fier de l'être

Poste le Wednesday 23 February 2005 12:42:31
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Clawangel

Merci vous deux! la commande 'find' m'a l'air très intéressante. Je vous tiendrais au courant!
si vous avez d'autres astuces, n'hésitez pas!
merciii
@bientôt

Poste le Wednesday 23 February 2005 13:41:19
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Guillaume_

Salut,

finalement pour ton vas ca donne:
Tu peu faire un script shell:

#!/bin/bash
#tu te places dans le repertoire ou il faut traiter
cd /opt/mon-rep
#find avec ces options te retourne touts les fichier
#(meme ceux dans les sous répertoires)
#dont les dernières modifications remontent a plus de 30 jours
find . -mtime +30

@+ ;-)
Guillaume.


Poste le Wednesday 23 February 2005 14:28:33
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: marc ferraton

d'un seul coup

# find /tonrep -mtime +30 -type f -exec rm {} \;

ATTENTION pas de pardon ....

Poste le Wednesday 23 February 2005 15:01:41
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Guillaume_

re,

ah oué bien joué marc! :-)

je savais pas que l'on pouvait mettre le "\" à la fin..
moi je le mettais tout le temps avant la commande "\find ...."

bref :-))

@+
merci de ton aide ;-)

Poste le Wednesday 23 February 2005 15:12:21
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Clawangel

Yeahhhh!!!
merci pour votre aide.
je vous remercie vraiment de tout coeur !!!

Poste le Wednesday 23 February 2005 15:20:21
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: lloyds

excusez moi mais le \ à la fin c pour quoi faire?

--
Adolescent attardé et fier de l'être

Poste le Wednesday 23 February 2005 16:40:32
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Clawangel

le '\' c pour les caractères d'échapement ... enfin il me semble ... smiling smiley

Poste le Wednesday 23 February 2005 16:57:42
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Guillaume_

et moi il me semble que c'est pour évité la confirmation de suppression :-))

a vérifier tout de meme ;-p

@+
gui

Poste le Wednesday 23 February 2005 17:32:12
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Jonesy's

Bonsoir,

Le '\' c'est pour pas que le shell interpréte le ';'. Donc que se soit le find qui l'interpréte.

@+

--- Marchons seul, sans faire le mal, sans rien attendre, tel l'éléphant qui traverse la forêt. ---

Poste le Wednesday 23 February 2005 18:08:18
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: lloyds

ahhhhh avec la derneire explication je comprends mieux merci

--
Adolescent attardé et fier de l'être

Poste le Wednesday 23 February 2005 21:16:17
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Sve@r

En fait, pour comprendre le "\;", il faut bien comprendre le "-exec".
Le "-exec" demande au find d'exécuter une commande. Le find ne connait pas la commande à l'avance (la commande peut être "rm", "cp", chmod, etc). Donc il ne sait pas où la commande se termine (on peut faire un "-exec" suivi d'un "-print" et le find ne saurait pas si le "-print" s'applique à lui ou à la commande)
Donc, il faut indiquer à find la fin de la commande. Cette fin est symbolisée par le ";".
Sauf que le caractère ";" est un caractère utilisé par le shell. Donc si on met "find ... -exec ... ;", le shell intercepte ce ";" et le find ne le reçoit plus.
C'est pour cela que, comme l'a si bien dit Jonesy's, il faut protéger ce fameux ";" du shell en mettant un "\" pour que le shell ne le traite pas lui-même et le passe au find.

Et les accolades du "-exec" symbolisent l'emplacement, dans la commande exécutée, du fichier trouvé par le find (au cas où lloyds ne le savait pas).

Poste le Wednesday 23 February 2005 22:31:51
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Clawangel

Pour le "\" et le ";", c'est bien expliqué. Je comprends mieux.
Le script marche niquel. C'est le top !!!

Poste le Wednesday 23 February 2005 22:36:18
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: marc ferraton

on n'appelle pas çà un script
un script très simple serait
----- fichier de scrip -- monscript.sh ------
#!/bin/sh
# version du 23/02/2004
# script pour supprimer les fichier du repertoire blablabla
find /lerep -mtime +30 -exec rm {} \;
#fin du script

ensuite tu executerais ton script
/lemplacementduscript/monscript.sh

avant tu aurais pris soins de rendre ce script executable
# chmod +x monscript.sh



Poste le Wednesday 23 February 2005 23:07:57
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: lloyds

okay parfait merci on apprends des trucs tous les jours!
@:-)

--
Adolescent attardé et fier de l'être

Poste le Thursday 24 February 2005 11:04:11
Répondre     Citer    
Re: Script qui traite une date
Envoyé par: Sve@r

Citation
marc ferraton
ensuite tu executerais ton script
/lemplacementduscript/monscript.sh


On n'est pas obligé de spécifier l'emplacement du script "/lemplacementduscript/monscript.sh" si on a pris la précaution de spécifier cet emplacement dans la variable "PATH". Dans ce cas, on peut lancer directement "monscript.sh".
Et si on veut pouvoir lancer un script situé dans le répertoire courant sans avoir à spécifier "./" quand on lance le script, on peut spécifier "." comme emplacement possible en écrivant
# export PATH="$PATH:." (attention, ce n'est pas à faire pour le compte "root" parce que ça ouvre une faille de sécurité)

Citation
marc ferraton
avant tu aurais pris soins de rendre ce script
executable
# chmod +x monscript.sh

On n'est pas réellement obligé mais on est alors obligé en contrepartie de demander spécifiquement au shell d'exécuter le script
# sh monscript.sh
A tout prendre, je préfère faire le "chmod" une seule fois que "sh" à chaque fois ;-)

Poste le Saturday 26 February 2005 12:02:12
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Script qui traite une date
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