Date de création d'un fichier depuis un for
sbouli
Messages postés
208
Statut
Membre
-
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
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
Configuration: Windows XP Internet Explorer 7.0
4 réponses
-
Salut,
Il est impossible de retrouver la date de création d'un fichier sous Unix/Linux ;-((
-
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.- 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... ;-))
- 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).
-
-
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 -
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)...
-
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 !