Format "time" dans depuis version 6 [Résolu

fsoubeiran
Messages : 8
Inscription : 18 août 2014, 12:38

Format "time" dans depuis version 6 [Résolu

Message par fsoubeiran » 18 août 2014, 12:55

Bonjour,

J'utilise très fréquemment la fonction find avec des formats de sortie spécifiques -printf pour gérer les fichiers (collecte, tri, réplication, statistqiues d'accès, etc...).

Dans CentOS5, les timestamp de fichiers sont au format HH:MM:SS

Ex : find . -printf '|%TY/%Tm/%Td %TT|%h/|%f|\r\n'
produit : |2014/08/18 12:20:05|répertoire/|fichierbidon.txt|

Depuis CentOS6, le timestamp d'un fichier (création, modification, accès) sort systématiquement avec 10 chiffres derrière les secondes !

La même chaîne de formatage produit :
produit : |2014/08/18 12:20:05.6765914790|répertoire/|fichierbidon.txt|
Même problème si je décompose le format des heures de manière explicite : %TH:%TM:%TS
Les secondes sont systématiquement livrées avec 10 décimales...

Une idée pour revenir au formatage sans décimales de CentOS5 ?

FSo

Avatar de l’utilisateur
nouvo09
Messages : 2042
Inscription : 20 octobre 2009, 08:14
Localisation : Paris, France

Re: Format "time" dans depuis version 6

Message par nouvo09 » 18 août 2014, 13:04

Tu as quelle version de Centos ?

Chez moi ta commande renvoie bien 10 décimales, mais ce ne sont que des zéros:|2012/07/08 16:14:25.0000000000|
C'est pas parce que c'est difficile qu'on ose pas,
c'est parce qu'on ose pas que c'est difficile !

fsoubeiran
Messages : 8
Inscription : 18 août 2014, 12:38

Re: Format "time" dans depuis version 6

Message par fsoubeiran » 18 août 2014, 13:26

J'utilise plusieurs machines : ce problème est apparu avec la version 6.
Actuellement : CentOS release 6.5 final
Je crois qu'il y a un "truc" autour des formats de timestamp, car si tu essaies de formater "date", tu obtiens toujours le bon format HH:MM:SS !
Et effectivement, certains répertoires renvoient des timestamp avec 10 zéros.

Beta-Pictoris
Messages : 1017
Inscription : 07 janvier 2014, 21:48
Localisation : Angers, France

Re: Format "time" dans depuis version 6

Message par Beta-Pictoris » 18 août 2014, 14:07

En mettant le nom du fichier en premier:

Code : Tout sélectionner

find . -printf '|%f' -exec date '+|%Y/%m/%d %T|' -r {} \;

fsoubeiran
Messages : 8
Inscription : 18 août 2014, 12:38

Re: Format "time" dans CentOS depuis version 6

Message par fsoubeiran » 19 août 2014, 07:09

Bonjour BP,

Merci, cela fonctionne, je viens de tester :
Beta-Pictoris a écrit :En mettant le nom du fichier en premier:

Code : Tout sélectionner

find . -printf '|%f' -exec date '+|%Y/%m/%d %T|' -r {} \;
Toutefois, je reste sur ma faim car j'utilise de nombreux formats de sortie (ci-dessous un exemple), et cela va m'obliger à modifier le code sur toutes les machines...

Ex :
F21='|%h/ | %f |%d|%Td/%Tm/%TY %TT|%u|%m|%g|\r\n'
...
find "$R1" -name "*.xml" -printf "$F21" | grep "ZNotes" | sort >> tmp5
...

N'y aurait-t-il pas un moyen de reparamétrer la fonction implicite "strftime" qui semble être appelée par find pour formater les timestamps ?

Par ailleurs, je n'ai trouvé aucune documentation sur ces 10 décimales apparues avec la version 6, et dont étrangement la dernière est toujours 0 !

FSo

fsoubeiran
Messages : 8
Inscription : 18 août 2014, 12:38

Re: Format "time" dans depuis version 6

Message par fsoubeiran » 19 août 2014, 07:30

Par ailleurs :
- cela n'est utilisable qu'à la fin de la chaine, ce qui pose d'autres problèmes.
- dans ce cas, il semble que date fait référence à la date de modification du fichier.
- Quid des autres timestamp ? Création, dernier accès, dernier statut ?
Merci d'avance pour votre concours.

Beta-Pictoris
Messages : 1017
Inscription : 07 janvier 2014, 21:48
Localisation : Angers, France

Re: Format "time" dans depuis version 6

Message par Beta-Pictoris » 19 août 2014, 13:39

Comme ceci:

Code : Tout sélectionner

find . -printf '|%TY/%Tm/%Td %TH:%TM:%.2TS|%h/|%f|\r\n'q

Finalement, -printf supporte aussi la syntaxe du C. :lol:

fsoubeiran
Messages : 8
Inscription : 18 août 2014, 12:38

Re: Format "time" dans depuis version 6

Message par fsoubeiran » 20 août 2014, 13:55

Top !
Le sujet est résolu, et de manière très élégante. ;)
Merci BP.

fsoubeiran
Messages : 8
Inscription : 18 août 2014, 12:38

Re: Format "time" dans depuis version 6

Message par fsoubeiran » 21 août 2014, 18:39

...et cela fonctionne aussi en tronquant directement le timestamp :

Code : Tout sélectionner

find . -printf '|%TY/%Tm/%Td %.8TT|%h/|%f|\r\n'
Au fait, comment fait-on pour clôturer un sujet ? :?:

Répondre