Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Conversions de dates en ksh

20 réponses
Avatar
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

10 réponses

1 2
Avatar
Erwan David
"gimae" écrivait :

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é
Avatar
Alain Ketterlin
"gimae" writes:

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.
Avatar
Gilles Pion
Ref: <4d76791c$0$31900$ de gimae


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
Avatar
Benoit Izac
Bonjour,

le 08/03/2011 à 19:44, gimae a écrit dans le message
<4d76791c$0$31900$ :

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
Avatar
gimae
"Gilles Pion" a écrit dans le message de news:

Ref: <4d76791c$0$31900$ de gimae


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.
Avatar
gimae
"Benoit Izac" a écrit dans le message de
news:
Bonjour,

le 08/03/2011 à 19:44, gimae a écrit dans le message
<4d76791c$0$31900$ :

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...
Avatar
gimae
"Alain Ketterlin" a écrit dans le message de
news:
"gimae" writes:

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).
Avatar
Cyrille Lefevre
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.
Avatar
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 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.
Avatar
Hugues
Ce cher Cyrille Lefevre <cyrille.lefevre-news% a posté :

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/]
1 2