Date de création d'un fichier depuis un for

Fermé
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 - 26 août 2008 à 16:28
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 - 28 août 2008 à 15:55
Bonjour,

comment obtenir l'année de création (pas modification) d'un fichier au sein d'une boucle FOR du type :

for fich in `ls -1 /var/log/*.log* 2>/dev/null`
do

blabla
done

J'ai bien la variable fich qui contient le nom complet du fichier mais où sont les autres informations ???

Merci d'avance.

Stéphane
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 août 2008 à 16:51
Salut,

Il est impossible de retrouver la date de création d'un fichier sous Unix/Linux ;-((
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
27 août 2008 à 10:24
si je peux me permettre, je ne suis pas d'accord.
ls -lc donne la date de création du fichier, pour autant qu'aucune commande qui modfie l'inode, telle que chmod ou chown n'ait été exécutée.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
27 août 2008 à 13:11
Tu peux, tu peux ;-))

Mais bon, si je regarde la page de man :
       -c     Employer la date de changement de statut des fichiers plutôt que
              la date de modification, autant pour l'affichage (option -l) que
              pour le tri (option -t).

       -c, --time=ctime, --time=status
              Trier  le  contenu  des  répertoires  en  fonction  des dates de
              changement des statuts de fichiers, plutôt qu'en fonction de  la
              date de modification.  S'il s'agit d'un format long, afficher la
              date de changement de statut plutôt que la date de  modification
              du fichier.
D'après tout ce que j'ai lu, la date de création d'un fichier n'est stockée nulle part. Mais bon j'ai peut être sauté une case... ;-))
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
27 août 2008 à 14:06
c'est juste, mais à la création du fichier, date de création == date de changement de statut pour autant que ce statut ne change pas par un chgrp, chmod, chown, la date de création perdure.

man ls sur Solaris
-c
Uses time of last modification of the i-node (file created, mode changed, and so forth) for sorting (-t) or printing (-l or -n).
0
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2
26 août 2008 à 18:43
grrr
j'aurais dû m'en douter ... mon problème est simple, sous postfix, dans les logs, l'année n'est pas écrite, conclusion si je me base sur les lignes de log pour savoir si j'ai traité le fichier ou pas ... je suis grillé en cas de début d'année ...
et je peux pas me baser sur les noms de fichiers à cause des rotations ....

.... je ne vois pas de solution ....

stéphane
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 août 2008 à 18:55
L'année n'est pas écrite dans les logs, mais le fichier de log lui (le dernier en cours ou les archives (gz)) a une date "ls -l" (c'est un ELLE minuscule et non pas un UN)...
0
sbouli Messages postés 200 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 14 août 2014 2
28 août 2008 à 15:55
Hello,

En fait, les logs subissent une rotation sur 60 jours via logrotate, il semble que la date subit alors une modif (la date de création explose, et l'autre prend 2 jours de décalage).
Bon quoi qu'il en soit, je ne suis intéressé que par les logs de moins d'un an donc soit, l'année est l'année en cours soit l'année d'avant si le mois en cours est < au mois du log

Je me base donc pas sur la date du fichier.

Cependant pour mon petit cerveau, je voudrais savoir comment avoir la date du fichier dans la boucle :

for fich in `ls -1 /var/log/*.log* 2>/dev/null`
do
echo "le fichier en cours est ${fich} dont la date est ${....}
done


Merci d'avance !
0