Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/09/2011, à 21:30

chiron

[résolu] BASH: Date de modification d'un fichier dans une variable

Bonsoir,

J'ai une série de "vieux" JPG sans données exif. Le but du jeu est de mettre la date et heure de dernière modification du fichier comme donnée exif de création de photo (avec exiv2),et de répéter l'opération pour les 500 fichiers. Le problème c'est que je n'arrive pas à récupérer la date de modif d'un fichier pour la mettre dans une variable. Je n'arrive à rien avec stat ou ls. Quelqun a une astuce?

Dernière modification par chiron (Le 07/09/2011, à 22:11)


In hoc signo vinces.

Hors ligne

#2 Le 06/09/2011, à 21:40

JoelS

Re : [résolu] BASH: Date de modification d'un fichier dans une variable

perl -MFile::stat -e 'print scalar localtime stat("examples.desktop")->mtime, "\n"'

si tu veux la date au format naturel du fichier examples.desktop, et

perl -MFile::stat -e 'print localtime stat("examples.desktop")->mtime, "\n"'

si tu la veux en epoch

Tu peux même ôter la chaîne , "\n" si tu ne veux pas un retour chariot à la fin.

Hors ligne

#3 Le 06/09/2011, à 22:39

chiron

Re : [résolu] BASH: Date de modification d'un fichier dans une variable

Merci, ça donne:

jyl@E6400:~/Bureau/int$ perl -MFile::stat -e 'print scalar localtime stat("1.jpg")->mtime, "\n"'
Sat Nov 19 15:19:26 2005

mais la chose se corse, de par le format des paramètres exigés par exiv2

   -a time Time adjustment in the format [-]HH[:MM[:SS]]. This option
           is only used with the 'adjust' action.
   -Y yrs  Year adjustment with the 'adjust' action.
   -O mon  Month adjustment with the 'adjust' action.
   -D day  Day adjustment with the 'adjust' action.

Comment extraire chaque valeur?


In hoc signo vinces.

Hors ligne

#4 Le 06/09/2011, à 22:39

AnsuzPeorth

Re : [résolu] BASH: Date de modification d'un fichier dans une variable

Bjr,

modif=$(stat -c '%y' ./fichier)
heure=${modif#* }
heure=${heure%.*}
year=${modif%%-*}
base=${modif%% *}
day=${base##*-}
month=${base#*-}
month=${month%-*}

EDIT: Ajout du "découpage", solution "fullbash", plus rapide que des cut.(mais ca serait plus simple/rapide en python !)

Dernière modification par AnsuzPeorth (Le 06/09/2011, à 22:55)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 07/09/2011, à 22:10

chiron

Re : [résolu] BASH: Date de modification d'un fichier dans une variable

Un grand merci. smile
Je suis arrivé à mes fins.

#!/bin/bash
#
cd /home/jyl/Bureau/int
for filename in $(ls -1); do
modif=$(stat -c '%y' $filename)
heure=${modif#* }
heure=${heure%.*}
year=${modif%%-*}
base=${modif%% *}
day=${base##*-}
month=${base#*-}
month=${month%-*}
exiv2 -M"set Exif.Image.DateTime $year:$month:$day $heure" $filename
done
# http://www.exiv2.org/tags.html
cd /home/jyl

In hoc signo vinces.

Hors ligne