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

sbouli Messages postés 208 Statut Membre -  
sbouli Messages postés 208 Statut Membre -
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 41342 Statut Modérateur 4 896
 
Salut,

Il est impossible de retrouver la date de création d'un fichier sous Unix/Linux ;-((
0
dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
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 41342 Statut Modérateur 4 896 > dubcek Messages postés 19032 Date d'inscription   Statut Contributeur Dernière intervention  
 
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 19032 Date d'inscription   Statut Contributeur Dernière intervention   5 641 > jipicy Messages postés 41342 Statut Modérateur
 
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 208 Statut Membre 2
 
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 41342 Statut Modérateur 4 896
 
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 208 Statut Membre 2
 
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