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

soustraction de dates

7 réponses
Avatar
Nicolas.MICHEL
Bonjour

Dans un shell script, je voudrais effacer les dossiers plus vieux que 2
semaines.

Dans un autre, je voudrais ne pas exécuter le script s'il a déjà été
lancé il y a moins de 20 secondes.

Existe-il un moyen de convertir la date en chiffre qu'on puisse
aditionner ou soustraire ?

Mille merci d'avance

--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas

7 réponses

Avatar
Pascal Bourguignon
(Nicolas MICHEL) writes:

Bonjour

Dans un shell script, je voudrais effacer les dossiers plus vieux que 2
semaines.

Dans un autre, je voudrais ne pas exécuter le script s'il a déjà été
lancé il y a moins de 20 secondes.

Existe-il un moyen de convertir la date en chiffre qu'on puisse
aditionner ou soustraire ?


man date
































date +%s


--
__Pascal Bourguignon__ http://www.informatimago.com/

Nobody can fix the economy. Nobody can be trusted with their finger
on the button. Nobody's perfect. VOTE FOR NOBODY.

Avatar
SauronDemMordor
Nicolas MICHEL wrote:
Bonjour

Dans un shell script, je voudrais effacer les dossiers plus vieux que 2
semaines.

Dans un autre, je voudrais ne pas exécuter le script s'il a déjà été
lancé il y a moins de 20 secondes.

Existe-il un moyen de convertir la date en chiffre qu'on puisse
aditionner ou soustraire ?

oui plein.

avec date et ses options, avec gawk, avec le format d affichage de la dat e.

mais a mon avis pour ton utilite, et si tu a a ta disposition un gnudate

$ date
Wed Apr 6 15:31:23 CEST 2005

$ date -d "yesterday"
Tue Apr 5 15:31:41 CEST 2005

$ date -d "last week"
Wed Mar 30 15:31:50 CEST 2005

$ date -d "last week 2 hour"
Wed Mar 30 17:32:43 CEST 2005

$ date -d "last week 2 hour ago"
Wed Apr 13 13:33:05 CEST 2005

......

Mille merci d'avance



Avatar
Laurent Wacrenier
Nicolas MICHEL écrit:
Dans un shell script, je voudrais effacer les dossiers plus vieux que 2
semaines.


Modulo que "plux vieux" est à définir,
find / -mtime +14 -exec rmdir "{}" ";"

Dans un autre, je voudrais ne pas exécuter le script s'il a déjà été
lancé il y a moins de 20 secondes.


Utiliser un fichier d'éstampillage horaire.

Existe-il un moyen de convertir la date en chiffre qu'on puisse
aditionner ou soustraire ?


man date

Avatar
Nicolas.MICHEL
SauronDemMordor wrote:

Existe-il un moyen de convertir la date en chiffre qu'on puisse
aditionner ou soustraire ?

oui plein.

avec date et ses options, avec gawk, avec le format d affichage de la date.

mais a mon avis pour ton utilite, et si tu a a ta disposition un gnudate


Euh, j'ai une version bsd de date. (Mac OS X)

Mais Pascal m'a donné la réponse
(qui n'est pas dans man date, mais dans man strftime(3) )

C'est donc bien :
date +%s


Merci à vous :)
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas


Avatar
Nicolas.MICHEL
Laurent Wacrenier wrote:

Nicolas MICHEL écrit:
Dans un shell script, je voudrais effacer les dossiers plus vieux que 2
semaines.


Modulo que "plux vieux" est à définir,
find / -mtime +14 -exec rmdir "{}" ";"


Juste auguste, j'avais oublié cette option de find.
Merci Laurent :)

Dans un autre, je voudrais ne pas exécuter le script s'il a déjà été
lancé il y a moins de 20 secondes.


Utiliser un fichier d'éstampillage horaire.


Bof, je crois que c'est plus propre avec le "date +%s" de Pascal.
Cela évite des écritures disque, le truc tourne toutes les 10 secondes,
c'est pas économique.

Existe-il un moyen de convertir la date en chiffre qu'on puisse
aditionner ou soustraire ?


man date


Euh, c'est pas faute de ne pas l'avoir lu, mais non, à part la mention
du man de strftime(3), rien n'est indiqué. Tu as peut-être une autre
version de man date, plus complet note.

Merci encore :)

--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas


Avatar
Laurent Wacrenier
Nicolas MICHEL écrit:
Utiliser un fichier d'éstampillage horaire.


Bof, je crois que c'est plus propre avec le "date +%s" de Pascal.
Cela évite des écritures disque, le truc tourne toutes les 10 secondes,
c'est pas économique.


date +%s indique la date courante, pas la date de dernière execution
d'un script.

Si c'est un truc à executer toutes les 10 secondes :

while sleep 10 ; do ... ; done


man date


Euh, c'est pas faute de ne pas l'avoir lu, mais non, à part la mention
du man de strftime(3), rien n'est indiqué. Tu as peut-être une autre
version de man date, plus complet note.


alors
man strftime

%s is replaced by the number of seconds since the Epoch, UTC (see
mktime(3)).
ensuite
man eval


Avatar
Pascal Bourguignon
(Nicolas MICHEL) writes:

SauronDemMordor wrote:

Existe-il un moyen de convertir la date en chiffre qu'on puisse
aditionner ou soustraire ?

oui plein.

avec date et ses options, avec gawk, avec le format d affichage de la date.

mais a mon avis pour ton utilite, et si tu a a ta disposition un gnudate


Euh, j'ai une version bsd de date. (Mac OS X)

Mais Pascal m'a donné la réponse
(qui n'est pas dans man date, mais dans man strftime(3) )

C'est donc bien :
date +%s


Oui, j'aurais du indiquer GNU date.

%s seconds since `00:00:00 1970-01-01 UTC' (a GNU extension)

GNU's Not Unix, mais Unix devrait devenir plus GNU...

--
__Pascal Bourguignon__ http://www.informatimago.com/
You never feed me.
Perhaps I'll sleep on your face.
That will sure show you.