Conversions de dates en ksh

Le
gimae
Bonjour,

Il m'est demandé de lister tous les fichiers d'un répertoire qui ont été
créés entre une date de début et une date de fin (qui peut être la date
courante).
Je dois utiliser pour cela une string contenant la date et l'heure: jour,
mois, année, heure, minute, seconde.

La commande find permet de retrouver des fichiers créés depuis un nombre de
minutes donné grâce à aux options -[acm]min (Si vous connaissez une autre
solution, je prends) mais ça ne suffit même pas puisque ma date va jusqu'à
la seconde et en plus il faudrait coder la conversion de la string en
secondes. Les quelques approches de solutions que j'ai trouvées sur le net
utilisent perl mais je cherche à faire la manip en ksh, mais comment ?

Merci pour toute aide
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Erwan David
Le #23187871
"gimae"
Bonjour,

Il m'est demandé de lister tous les fichiers d'un répertoire qui ont été
créés entre une date de début et une date de fin (qui peut être la date
courante).
Je dois utiliser pour cela une string contenant la date et l'heure: jour,
mois, année, heure, minute, seconde.

La commande find permet de retrouver des fichiers créés depuis un nombre de
minutes donné grâce à aux options -[acm]min (Si vous connaissez une autre
solution, je prends) mais ça ne suffit même pas puisque ma date va jusqu'à
la seconde et en plus il faudrait coder la conversion de la string en
secondes. Les quelques approches de solutions que j'ai trouvées sur le net
utilisent perl mais je cherche à faire la manip en ksh, mais comment ?



Pour la conversion, tu peux utiliser date...

date -d 'chaine' +'format de sortie'



--
Le travail n'est pas une bonne chose. Si ça l'était,
les riches l'auraient accaparé
Alain Ketterlin
Le #23187911
"gimae"
La commande find permet de retrouver des fichiers créés depuis un nombre de
minutes donné grâce à aux options -[acm]min (Si vous conna issez une autre
solution, je prends) mais ça ne suffit même pas puisque ma date va jusqu'à
la seconde



Il me semble qu'on peut utiliser des minutes fractionnaires (0.5 vaut 30
secondes).

et en plus il faudrait coder la conversion de la string en secondes.



Erwan a répondu dans un autre message.

-- Alain.
Gilles Pion
Le #23188061
Ref:

Il m'est demandé de lister tous les fichiers d'un répertoire qui ont été
créés entre une date de début et une date de fin (qui peut être la date
courante).



J'ai le regret de t'informer que ce n'est tout simplement pas possible (sous
Unix en tout cas): la date de *création* d'un fichier n'est pas conservée dans
les attributs de ce dernier.

Seule sont conservées les dates de
* modification du contenu (mtime)
* dernier accès (atime)
* modification des attributs (ctime)


Ref: http://linux.die.net/man/2/stat
--
Gilles Pion
Benoit Izac
Le #23188091
Bonjour,

le 08/03/2011 à 19:44, gimae a écrit dans le message

Il m'est demandé de lister tous les fichiers d'un répertoire qui ont
été créés entre une date de début et une date de fin (qui peut être la
date courante).
Je dois utiliser pour cela une string contenant la date et l'heure:
jour, mois, année, heure, minute, seconde.

La commande find permet de retrouver des fichiers créés depuis un
nombre de minutes donné grâce à aux options -[acm]min (Si vous
connaissez une autre solution, je prends) mais ça ne suffit même pas
puisque ma date va jusqu'à la seconde et en plus il faudrait coder la
conversion de la string en secondes. Les quelques approches de
solutions que j'ai trouvées sur le net utilisent perl mais je cherche
à faire la manip en ksh, mais comment ?



Comme il a été dit, c'est la date de modification qu'il faut prendre en
compte. Pour la solution, tu peux créer deux fichiers avec la commande
touch aux dates que tu souhaites et utiliser l'option -newer de find
pour faire la recherche.

--
Benoit Izac
gimae
Le #23188121
"Gilles Pion"
Ref:

Il m'est demandé de lister tous les fichiers d'un répertoire qui ont été
créés entre une date de début et une date de fin (qui peut être la date
courante).



J'ai le regret de t'informer que ce n'est tout simplement pas possible
(sous
Unix en tout cas): la date de *création* d'un fichier n'est pas conservée
dans
les attributs de ce dernier.

Seule sont conservées les dates de
* modification du contenu (mtime)
* dernier accès (atime)
* modification des attributs (ctime)



Oui je me suis mal exprimée, je pense que le mtime devrait suffire.
gimae
Le #23188221
"Benoit Izac" news:
Bonjour,

le 08/03/2011 à 19:44, gimae a écrit dans le message

Il m'est demandé de lister tous les fichiers d'un répertoire qui ont
été créés entre une date de début et une date de fin (qui peut être la
date courante).
Je dois utiliser pour cela une string contenant la date et l'heure:
jour, mois, année, heure, minute, seconde.

La commande find permet de retrouver des fichiers créés depuis un
nombre de minutes donné grâce à aux options -[acm]min (Si vous
connaissez une autre solution, je prends) mais ça ne suffit même pas
puisque ma date va jusqu'à la seconde et en plus il faudrait coder la
conversion de la string en secondes. Les quelques approches de
solutions que j'ai trouvées sur le net utilisent perl mais je cherche
à faire la manip en ksh, mais comment ?



Comme il a été dit, c'est la date de modification qu'il faut prendre en
compte. Pour la solution, tu peux créer deux fichiers avec la commande
touch aux dates que tu souhaites et utiliser l'option -newer de find
pour faire la recherche.



Ca c'est une idée qu'elle est bonne...
gimae
Le #23188211
"Alain Ketterlin" news:
"gimae"
La commande find permet de retrouver des fichiers créés depuis un nombre
de
minutes donné grâce à aux options -[acm]min (Si vous connaissez une autre
solution, je prends) mais ça ne suffit même pas puisque ma date va jusqu'à
la seconde



Il me semble qu'on peut utiliser des minutes fractionnaires (0.5 vaut 30
secondes).

*** Je me suis posé la question mais n semble être un nombre entier. Bon, je
n'ai plus qu'à faire l'essai...

et en plus il faudrait coder la conversion de la string en secondes.



Erwan a répondu dans un autre message.

*** Oui, mais j'aimerais bien savoir comment décrire la chaîne date. Le
problème avec Unix c'est que les man sont très complets mais que les
exemples sont rares ! Comment décrire la chaîne date de l'option -d sachant
que je n'ai que des numéros, même pour les mois ? Et qu'indiquer comme
format pour tout convertir en secondes ? Les options de la commande date ne
parlent pas de conversion, elle ne permettent a priori que d'extraire un
élément donné (i.e si je lui donne 1h30mn et que j'indique l'option %M, le
résultat sera 30 et pas 60+30mn).
Cyrille Lefevre
Le #23188201
Le 08/03/2011 19:44, gimae a écrit :
Bonjour,

Il m'est demandé de lister tous les fichiers d'un répertoire qui on t été
créés entre une date de début et une date de fin (qui peut être la date
courante).
Je dois utiliser pour cela une string contenant la date et l'heure: jou r,
mois, année, heure, minute, seconde.

La commande find permet de retrouver des fichiers créés depuis un n ombre de
minutes donné grâce à aux options -[acm]min (Si vous connaissez u ne autre
solution, je prends) mais ça ne suffit même pas puisque ma date va jusqu'à
la seconde et en plus il faudrait coder la conversion de la string en
secondes. Les quelques approches de solutions que j'ai trouvées sur l e net
utilisent perl mais je cherche à faire la manip en ksh, mais comment ?



Bonjour,

la façon portable est d'utiliser le couple touch / find :

trap 'rm -f /tmp/old$$ /tmp/new$$' 0 1 2 3 15
touch -t $Y1$m1$d1$H1$M1.$S1 /tmp/old$$
touch -t $Y2$m2$d2$H2$M2.$S2 /tmp/new$$
find /somewhere -newer /tmp/old$$ ! -newer /tmp/new$$ -something

comme quoi la vie existe dans les GNU :-)

Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Cyrille Lefevre
Le #23188381
Le 08/03/2011 22:45, gimae a écrit :

*** Oui, mais j'aimerais bien savoir comment décrire la chaîne date . Le
problème avec Unix c'est que les man sont très complets mais que le s



s/unix/linux/

exemples sont rares ! Comment décrire la chaîne date de l'option -d sachant



Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
Hugues
Le #23189551
Ce cher Cyrille Lefevre
Le 08/03/2011 22:45, gimae a écrit :

*** Oui, mais j'aimerais bien savoir comment décrire la chaîne date. Le
problème avec Unix c'est que les man sont très complets mais que les



s/unix/linux/



Ah tiens, les pages man des outils GNU, c'est du Linux ?
On m'aurait donc menti pendant toutes ces années....

--
Hugues Hiegel [http://www.hiegel.fr/~hugues/]
Publicité
Poster une réponse
Anonyme