Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
récupération et mise en forme de la date d'un fichier
Envoyé par: cancerus

Bonsoir,

Je cherche le moyen simple (ie pas une usine à gaz :-) en Korn Shell de récupérer et de mettre sous la forme ddmmyy la date d'un fichier que l'on récupère, par exemple, en "Feb 17 toto.sh" avec un ls -al.

Merci d'avance pour vos réponses.

Poste le Friday 17 February 2006 17:56:15
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier

Sous quel système ?? avec un ls -la, la forme de la date est : 2006-01-27 21:26

--
Brugmans Frédéric

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

Poste le Friday 17 February 2006 18:41:15
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier
Envoyé par: Sve@r

Citation
cancerus
Bonsoir,

Je cherche le moyen simple (ie pas une usine à gaz
en Korn Shell de récupérer et de mettre sous la
forme ddmmyy la date d'un fichier que l'on
récupère, par exemple, en "Feb 17 toto.sh" avec un
ls -al.

Merci d'avance pour vos réponses.

Ben tu fais un
chaine=`ls -ald fichier_en_question`
puis avec l'aide de cut et/ou awk tu extraits les infos qui vont bien de la variable "$chaine"
L'option "d" sert au cas où "fichier_en_question" est un répertoire, afin que le "ls" donne le nom du répertoire et non son contenu...

Citation
Frédéric Brugmans
Sous quel système ?? avec un ls -la, la forme de
la date est : 2006-01-27 21:26
Uniquement si le fichier est daté de l'année courante sinon la date est de la forme : mois année (ou un truc approchant)...


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

Poste le Saturday 18 February 2006 13:33:04
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier

stat -t -c %y fichier | cut '-d ' -f1

renvoie une chaine du genre 2006-02-17

Poste le Saturday 18 February 2006 16:50:16
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier
Envoyé par: Sve@r

Citation
Basile STARYNKEVITCH
stat -t -c %y fichier | cut '-d ' -f1

renvoie une chaine du genre 2006-02-17

Tiens ? Je ne connaissais pas "stat". Bon truc ça... :-)


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

Poste le Sunday 19 February 2006 12:22:53
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier

tu ne connais pas ?

Shame on you :-)):-)) C'est trop pratique

--
Brugmans Frédéric

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

Poste le Sunday 19 February 2006 15:14:49
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier
Envoyé par: cancerus

Bonjour,

Toutes mes excuses, je suis sous Unix AIX.
Merci de vos réponses.
J'ai essayé toutes les commandes que vous m'avez communiqué mais sans résultat concluant.
stat n'est pas connu sous AIX et ls -al me donne:
-rw-r----- 1 usertoto dev 6543 Feb 9 15:49 toto.sh
donc, à moins de récupérer le mois dans une chaîne, de comparer cette chaîne dans un case pour lui associer un nombre. Et ensuite traiter la chaîne correspondant à l'heure pour déterminer qu'il s'agît bien d'une heure (format HH:mm) sinon c'est l'année et, encore,seulement dans le cas où le fichier est vieux de plus de 6 mois... Enfin, tout de suite, ça fait usine à gaz avec pas mal de tests, comparaison de la date du fichier par rapport au premier janvier...
Bref, je vais continuer à chercher.
Merci encore.

Poste le Monday 20 February 2006 09:28:37
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier

Citation
cancerus
Toutes mes excuses, je suis sous Unix AIX.
Merci encore.

Fallait le dire avant!

3 solutions s'offrent à vous:

1. Vous pouvez installer les utilitaires GNU (idéalement dans /usr/local sous root - donc les executables dans /usr/local/bin, à défaut dans $HOME donc les executables dans $HOME/bin). Le fait de pouvoir ou pas installer ces utilitaires (que je trouve très pratiques) dépend: si vous êtes autorisé à le faire par votre employeur, si vous avez la place disque pour etc.

2. écrire l'équivalent en C (ca doit faire moins de 50 lignes, essentiellement les fonctions stat, localtime, strftime)

3. plus simple: écrire dans un langage de script comme Ruby Ocaml Perl Python (où ca doit faire moins de 10 lignes). Les détails concrets dépendent du langage de script utilisé et supporté par votre AIX.

En général, sur les unix propriétaires (et j'ai autrefois pratiqué SunOS3, 4, 5, HPUX 9, AIX3?, ...) ça vaut vraiement le coup de passer quelques heures (voire 2 jours) à installer la batterie usuelle de GNuseries et de logiciels libres autres (notamment Ocaml Ruby Perl). Certains constructeurs donnent même des URL ou des CDROM de paquets GNU binaires précompilés. Essayez de convaincre votre boss que ce n'est pas du temps perdu (passer à les installer) mais du temps gagné (en productivité plus grande pour le travail quotidien).

La question de comment convaincre son boss et un autre (et vaste) sujet, et merite à elle seule des milliers de pages de littérature. Le principe de Peter [fr.wikipedia.org] s'applique alors...

----

Basile STARYNKEVITCH

Membre de l'APRIL « promouvoir et défendre le logiciel libre » - adhérez vous aussi à l'APRIL!

Projet logiciel libre: RefPerSys

Poste le Monday 20 February 2006 10:22:26
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier
Envoyé par: Sve@r

Citation
cancerus
Bonjour,

Toutes mes excuses, je suis sous Unix AIX.
Merci de vos réponses.
J'ai essayé toutes les commandes que vous m'avez
communiqué mais sans résultat concluant.
stat n'est pas connu sous AIX et ls -al me donne:
-rw-r----- 1 usertoto dev 6543 Feb 9
15:49 toto.sh
donc, à moins de récupérer le mois dans une
chaîne, de comparer cette chaîne dans un case pour
lui associer un nombre. Et ensuite traiter la
chaîne correspondant à l'heure pour déterminer
qu'il s'agît bien d'une heure (format HH:mm) sinon
c'est l'année et, encore,seulement dans le cas où
le fichier est vieux de plus de 6 mois... Enfin,
tout de suite, ça fait usine à gaz avec pas mal de
tests, comparaison de la date du fichier par
rapport au premier janvier...
Bref, je vais continuer à chercher.
Merci encore.

Tu vas pas te casser les oursins avec tous ces soucis métaphysiques. La commande n'y est pas, ben tu te la crées et ça prend 20 lignes max. C'est pour ça que le C existe sous Unix...
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>

int main(int argc, char *argv[])
{
....struct stat stat_fic;                 // Pour récupérer le status
....struct tm *date_fic;                  // Pour convertir la date machine en date humaine

....// Récupération du status du fichier passé en paramètre
....stat(argv[1], &stat_fic);

....// Conversion de la date machine du fichier en date humaine
....date_fic=localtime(&stat_fic.st_mtime);

....// Affichage de la date
....printf("%u%u%u\n", date_fic->tm_mday, date_fic->tm_mon, date_fic->tm_year + 1900);
}

Tu copies ce code dans un fichier "stat.c", tu compiles en tapant "cc stat.c -o stat" puis tu exécutes en tapant "./stat fichier_dont_on_veut_la_date"

Si tu veux l'heure de greenwich, tu remplaces "localtime" par "gmtime".

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

Poste le Monday 20 February 2006 14:44:22
Répondre     Citer    
Re: récupération et mise en forme de la date d'un fichier
Envoyé par: cancerus

Bon, et bien avec tout ça, si je ne m'en sors pas...
Merci à tous pour vos réponses et solutions.
smiling smiley#

Poste le Tuesday 21 February 2006 13:52:34
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
récupération et mise en forme de la date d'un fichier
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