IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Modifier récursivement les données EXIF de certains fichiers


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Par défaut Modifier récursivement les données EXIF de certains fichiers
    Bonjour,

    Certains de mes fichiers photos (pas tous) on une date de création erronées.
    Chanceux que je suis, il s'agit d'une erreur de 4 ans exactement.

    J'ai trouvé la commande exiftool qui va me permettre de réajuster tout ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exiftool "-MediaCreateDate+=4:0:0 0:0:0" P10*.*
    Sur un fichier, ça marche parfaitement.

    Mon soucis est plus lié à un problème de scrit shell (je suis sous Linux avec bash).

    En effet, mes photos sont dans une enorme arborescence. Je peux facilement les trouver via le find suivant :
    Seulement cette commande me retourne aussi les photos qui commencent par P10* qui ont une date EXIF correcte !

    Je dois donc trouver un moyen de faire le tri sur ces photos, en checkant uniquement celle qui ont dans leur tag "MediaCreateDate" l'année 2009.
    Sur un seul fichier, la commande suivante fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exiftool -s P1060319.JPG |grep MediaCreateDate|grep 2009
    Ma question est la suivante : comment faire pour réaliser les étapes suivantes dans cette ordre là :
    1. rechercher récursivement tous les fichiers du répertoire courant qui s'appellent P10*.*
    2. parmi ces résultats, ne garder que les fichiers qui ont la chaine "2009" dans le tag EXIF "MediaCreateDate"
    3. sur chacun de ces résultats, appliquer la commande : exiftool "-MediaCreateDate+=4:0:0 0:0:0" $i


    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name P10*.*|xargs -I{} bash -c "exiftool -s {}|egrep -i \"MediaCreateDate.*2009\" >/dev/null && echo {}"|xargs exiftool "-MediaCreateDate+=4:0:0 0:0:0"
    Peut être pas utile d'utiliser find si les images se trouvent toutes dans le répertoire courant (à la racine de ce répertoire courant) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for file in P10*; do exiftool -s "$file"|egrep -i "MediaCreateDate.*2009" >/dev/null && exiftool "-MediaCreateDate+=4:0:0 0:0:0" "$file"; done
    ?

    Idriss

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Par défaut
    Merci ok.Idriss, la première solution marche nickel !
    Je n'ai pas testé la seconde car les dossiers sont imbriqués et j'ai besoin du find pour cela.

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Super !

    Citation Envoyé par Spheerys Voir le message
    Je n'ai pas testé la seconde car les dossiers sont imbriqués et j'ai besoin du find pour cela.
    Oui dans ce cas, la première est plus adaptée en effet.

    Idriss

  5. #5
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    En relisant ma commande, je me rend compte qu'on peux encore simplifier (même si j'imagine que c'était du one shot et que ça y-est ton soucis est résolu).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name P10*.*|xargs -I{} bash -c "exiftool -s {}|egrep -i \"MediaCreateDate.*2009\" >/dev/null && exiftool \"-MediaCreateDate+=4:0:0 0:0:0\" {}"
    D'ailleurs, il est encore possible de simplifier avec l'option -exec de find et se passer complétement de xargs...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 17
    Par défaut
    j'ai été un peu vite en besogne !
    J'avais fait un test vite fait sur une arborescence bidon et ça a marché.

    Sauf qu'en réalité, j'ai des répertoires avec des espaces et des accents.
    Et ça, ça bloque la commande magique !

    J'ai essayé de voir si je pouvais m'en sortir seul, mais ça semble moins trivial que je ne l'imaginais !

    Un nouveau coup de pouce me sera utile

Discussions similaires

  1. Modifier les données exif
    Par fab039 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/06/2008, 17h35
  2. Modifier les données exif
    Par fab039 dans le forum ASP
    Réponses: 0
    Dernier message: 24/06/2008, 15h34
  3. Réponses: 3
    Dernier message: 04/04/2008, 07h03
  4. Réponses: 3
    Dernier message: 23/09/2006, 15h19
  5. Réuperer les données à partir d'un fichier de log
    Par Oberown dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 31/10/2005, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo