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 22/08/2016, à 19:35

OrionB

Quel commande ou quel script pour gérer mes photos ?

Bonjour,

Je cherche à remplacer la date de modification de mes images par leur date de prise... Comment puis-je m'y prendre ? Je ne sais pas trop quelles commandes je pourrais utiliser.
J'imagine qu'il faut un script pour que ce soit plus simple... Si quelqu'un peut me renseigner ou m'aider à écrire le script ça m'intéresserait...

Merci d'avance,
OrionB


Étudiant en PTSI. A lu "Reprenez le contrôle à l'aide de Linux" du Site du Zéro en 2015.

Hors ligne

#2 Le 22/08/2016, à 22:07

OrionB

Re : Quel commande ou quel script pour gérer mes photos ?

Il semblerait qu'il faut utiliser touch pour modifier la date d'un fichier... Sauf que quand j’essaye d'entrer une date personnalisée, touch me renvoie en sortie que le format de date n'est pas bon pourtant je suis le manuel... Quelqu'un aurait un exemple de modification personnalisée de date avec touch ?

Merci d'avance,
OrionB


Étudiant en PTSI. A lu "Reprenez le contrôle à l'aide de Linux" du Site du Zéro en 2015.

Hors ligne

#3 Le 22/08/2016, à 22:21

pingouinux

Re : Quel commande ou quel script pour gérer mes photos ?

Bonsoir,
Quel format de commande as-tu essayé ?

Hors ligne

#4 Le 22/08/2016, à 22:37

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

...par leur date de prise..

comment récupère-tu la date de prise ?

…J'imagine qu'il faut un script pour que ce soit plus simple...

Ça dépendra ce que tu veux faire, du nombre de fichiers et du nombre de dates, etc...

…quand j’essaye d'entrer une date personnalisée…

Comment procède-tu ?

…Quelqu'un aurait un exemple de modification personnalisée de date avec touch…

touch --date=$(LANG=C;date) /Chemin/EtnomDuFichier

Hors ligne

#5 Le 23/08/2016, à 21:46

OrionB

Re : Quel commande ou quel script pour gérer mes photos ?

Bonsoir,

Merci pour ces réponses.

Quel format de commande as-tu essayé ?

touch -m -t dateNumérique[[CC]AA]MMJJhhmm[.ss] 

comment récupère-tu la date de prise ?

Justement c'est une question que je pose à la communauté : mon format d'image est le jpeg... Si quelqu'un connaît une commande pour extraire les informations d'un fichier jpeg...

Ça dépendra ce que tu veux faire, du nombre de fichiers et du nombre de dates, etc...

Plus de 500 photos dans différents fichiers... En fait c'est que j'ai fait des sauvegardes des photos de mon téléphone mais du coup la date est quasiment la même pour tous les fichiers : la date de la sauvegarde.

Comment procède-tu ?

Pas de la bonne manière apparemment :

touch -m -t date Numérique[[CC]AA]MMJJhhmm[.ss] 

Merci pour l'exemple mais j'ai l'impression qu'il ne m'avance pas énormément (oui je suis un noob sur Linux comme on dit)... Quelqu'un aurait un exemple de la même ligne mais avec une date du genre 01/02/2016 04h05m06s ?

touch --date=$(LANG=C;date) /Chemin/EtnomDuFichier

Étudiant en PTSI. A lu "Reprenez le contrôle à l'aide de Linux" du Site du Zéro en 2015.

Hors ligne

#6 Le 23/08/2016, à 21:57

pingouinux

Re : Quel commande ou quel script pour gérer mes photos ?

Quelqu'un aurait un exemple de la même ligne mais avec une date du genre 01/02/2016 04h05m06s ?

touch -t 201602010405.06 fichier

ou

touch -d "2016-02-01 04:05:06" fichier

Hors ligne

#7 Le 23/08/2016, à 22:07

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

Sur mon smartphone, les photos s'enregistrent avec un nom en fonction de la Date_HeureMinutesSecondes de la prise de vue :

IMG_20150508_152049.jpg
IMG_20150909_141548.jpg
IMG_20151209_153831.jpg

J'avais fait un script pour récupérer ces informations afin de créer une page Web pour afficher ces photos avec la date (avec le jour de la semaine) qui s'affichait par survol de la souris sur la photo (attribut title et alt).
Je vais essayer de le retrouver, il doit être utilisable pour la commande touch
EDIT : Je viens de le retrouver. Je l'avais créé en décembre 2015, et j'avais d'ailleurs mis dans les TOUDOUX : …Voir aussi avec les infos EXIF…

Mais encore faut-il que tes noms de fichiers soient formulé de la même manière…

=======
Si tes images comportent des données EXIF, ce sera peut-être plus simple (et plus fiable) qu'en utilisant le nom du fichier…
Mais je ne suis pas sûr que ces informations EXIF seront encore là si l'image a été modifié entre temps, c'est pour ça que j'avais utilisé le nom de fichier.

=======
Finalement, je vois que dans mon script, j'avais aussi utilisé touch pour remettre les dates des fichiers…

#!/bin/bash

echo -e "<html>\n\t<head>\n\t\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n\t</head>"
echo -e "\t<body style=\"margin-right: auto; margin-left: auto; text-align: center\">";

maRegex='IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2})'
for nomFich in *.jpg; do {
    [[ ${nomFich} =~ ${maRegex} ]] && {
        # date du fichier remise en fonction du nom du fichier
        touch -t ${BASH_REMATCH[1]}${BASH_REMATCH[2]}${BASH_REMATCH[3]}${BASH_REMATCH[4]}${BASH_REMATCH[5]}.${BASH_REMATCH[6]} $nomFich
        tmpDte="${BASH_REMATCH[1]}-${BASH_REMATCH[2]}-${BASH_REMATCH[3]}"
        dateImg="$(date -d ${tmpDte} '+%A %e %B %Y')"
        echo -e "\t\t<img src=\"${nomFich}\" alt=\"Photo prise ${dateImg}\"  title=\"Photo prise ${dateImg}\" /><br />${dateImg}<hr /><br />"
    }
}
done
echo -e "\t</body>\n</html>"

Pour seulement remettre la date en fonction du nom du fichier, il faudrait utiliser cet extrait du script précédent :
(En plus de la date, il met aussi l'heure et les secondes)

#!/bin/bash

maRegex='IMG_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2})([0-9]{2})'
for nomFich in *.jpg; do {
    [[ ${nomFich} =~ ${maRegex} ]] && {
        # date du fichier remise en fonction du nom du fichier
        touch -t ${BASH_REMATCH[1]}${BASH_REMATCH[2]}${BASH_REMATCH[3]}${BASH_REMATCH[4]}${BASH_REMATCH[5]}.${BASH_REMATCH[6]} $nomFich
    }
}
done

Les deux scripts ci-dessus utilisent le nom du fichier s'il est de la forme : IMG_20151209_153831.jpg

=======
@pingouinux Je suis preneur de toute remarque/conseil que tu aurais envie (et le temps) de faire au sujet de mes scripts. Merci.

Dernière modification par MicP (Le 24/08/2016, à 15:48)

Hors ligne

#8 Le 24/08/2016, à 22:14

cledesol

Re : Quel commande ou quel script pour gérer mes photos ?

Bonsoir.

Il y a un outil qui fait cela très bien : jhead.

Je renomme mes photos avec la date de prise contenue dans les données Exif du fichier jpeg.

Une simple commande :

jhead -exonly -n%Y_%m_%d_%H%M%S *.jpg

fait directement le travail sur tous les fichiers jpeg du répertoire dans lequel elle est lancée.
Toutes mes photos ont pour nom l'année sur 4 chiffres, le mois sur 2 chiffres, le jour du mois sur 2 chiffres puis un index composé à partir de l'heure, minute, seconde.


Bon, eh bien je vais partir en Théorie parce qu'en Théorie, tout se passe bien ....

Hors ligne

#9 Le 24/08/2016, à 22:17

mloupiot

Re : Quel commande ou quel script pour gérer mes photos ?

Bonsoir,
Krename (je suis sous kubuntu) fait ça très bien et beaucoup d'autres choses …

Hors ligne

#10 Le 25/08/2016, à 00:22

Nairwolf

Re : Quel commande ou quel script pour gérer mes photos ?

OrionB a écrit :

Je cherche à remplacer la date de modification de mes images par leur date de prise...
OrionB

Bonjour OrionB. Ma remarquera sera peut-être hors-sujet, mais, tant pis, je voulais faire cette remarque.

Ce n'est peut-être pas une bonne idée de remplacer la date de modification de tes images par leur date de prise. Généralement, la date de 'prise' se trouve dans les données exif de ton format jpg. Cette date indique la date de prise de vue. La date de modification de tes images, c'est généralement, la date où tu as copié tes images sur ton disque dur. Cela n'a rien à voir sémantiquement. Ce sont deux informations différentes, et a priori, ce n'est pas forcément nécessaire de faire correspondre les deux. Mais, je ne connais pas ton besoin derrière tout ça, donc, je ne juge pas tes intentions...

En cherchant un tout petit peu, je suis tombé sur exiftags qui te permet de lire les balises Exift.

Hors ligne

#11 Le 25/08/2016, à 04:50

pingouinux

Re : Quel commande ou quel script pour gérer mes photos ?

MicP #7 a écrit :

@pingouinux Je suis preneur de toute remarque/conseil que tu aurais envie (et le temps) de faire au sujet de mes scripts.

Tu peux éventuellement simplifier la regex :

#!/bin/bash

maRegex='IMG_([0-9]{8})_([0-9]{4})([0-9]{2})'
for nomFich in *.jpg; do {
    [[ ${nomFich} =~ ${maRegex} ]] && {
        # date du fichier remise en fonction du nom du fichier
        touch -t ${BASH_REMATCH[1]}${BASH_REMATCH[2]}.${BASH_REMATCH[3]} $nomFich
    }
}
done

Dernière modification par pingouinux (Le 25/08/2016, à 04:51)

Hors ligne

#12 Le 25/08/2016, à 09:59

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

Bonjour pingouinux

…Tu peux éventuellement simplifier la regex : …

C'est vrai que séparer année moi et jour pour les concaténer plus tard…

Merci beaucoup smile

Dernière modification par MicP (Le 14/03/2017, à 11:40)

Hors ligne

#13 Le 25/08/2016, à 11:12

erresse

Re : Quel commande ou quel script pour gérer mes photos ?

Bonjour,

Utiliser "jhead", "exiv2", "exiftool" qui travaillent sur les métadonnées des fichiers jpeg et notamment les dates, bien sûr...
Tu peux aussi jeter un oeil au script "Omnimages" que j'ai écrit. Lien vers le paquet deb


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#14 Le 25/08/2016, à 16:39

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

…sur les métadonnées des fichiers jpeg…

Comme je le faisais remarquer : Si l'image n'a pas été modifié par un logiciel qui recréera une image sans les données EXIF.
Je ne me souviens plus quel logiciel (peut-être un script Gimp d'ailleurs) j'avais utilisé pour simplement réduire la taille ses images afin d'alléger les pages webs => les données EXIF avaient été supprimées, ce qui est logique puisqu'elles n'étaient plus cohérentes (Taux de compression jpg différents, résolution x et y, Unité de résolution,  etc.)

Dernière modification par MicP (Le 26/08/2016, à 18:21)

Hors ligne

#15 Le 25/08/2016, à 23:23

OrionB

Re : Quel commande ou quel script pour gérer mes photos ?

Bonsoir,

Merci beaucoup pour toutes ces réponse et ces échanges ! smile

Je pense que le script de MicP est une bonne base... (merci beaucoup MicP !) Je n'ai pas fait de bash depuis... 9 mois maintenant... Je vais essayer de le lire pour comprendre comment l'utiliser...
Ça tombe très bien car mes photos ont le même format de nom.

cledesol a écrit :

Il y a un outil qui fait cela très bien : jhead.

Je renomme mes photos avec la date de prise contenue dans les données Exif du fichier jpeg.

Merci beaucoup cet outil peut être très utile en cas de besoin...

Nairwolf a écrit :

Ce n'est peut-être pas une bonne idée de remplacer la date de modification de tes images par leur date de prise. Généralement, la date de 'prise' se trouve dans les données exif de ton format jpg. Cette date indique la date de prise de vue. La date de modification de tes images, c'est généralement, la date où tu as copié tes images sur ton disque dur. Cela n'a rien à voir sémantiquement. Ce sont deux informations différentes, et a priori, ce n'est pas forcément nécessaire de faire correspondre les deux. Mais, je ne connais pas ton besoin derrière tout ça, donc, je ne juge pas tes intentions...

Déjà, merci pour ta remarque. Mais en fait c'est parce que les galeries de téléphone trient les photos par leur date de modification. C'est juste ça en fait. ^^

Je vous dis si j'arrive à utiliser le script.

Encore merci à tous !
OrionB


Étudiant en PTSI. A lu "Reprenez le contrôle à l'aide de Linux" du Site du Zéro en 2015.

Hors ligne

#16 Le 25/08/2016, à 23:27

OrionB

Re : Quel commande ou quel script pour gérer mes photos ?

Comment il faut faire pour indiquer au script quel dossier qui contient les images il faut traiter ?


Étudiant en PTSI. A lu "Reprenez le contrôle à l'aide de Linux" du Site du Zéro en 2015.

Hors ligne

#17 Le 26/08/2016, à 06:39

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

OrionB a écrit :

… indiquer au script quel dossier qui contient les images…

Tel qu'il était, le script traitait les fichiers du répertoire depuis lequel la commande avait été lancé.

Mais avec ces petites modifications :

#!/bin/bash

# Modifie la date/heure des fichiers .jpg en fonction de leur nom.
# Les noms des fichiers devront être de la forme : IMG_AAAAMMJJ_HHMMSS.jpg

# Donner en paramètre le nom du répertoire contenant les fichiers à traiter.
# Si aucun paramètre n'est donné, le répertoire courant est traité.

maRegex='IMG_([0-9]{8})_([0-9]{4})([0-9]{2})'
for nomFich in "${1}"IMG_*.jpg; do {
    [[ ${nomFich} =~ ${maRegex} ]] && {
        # Date du fichier remise en fonction du nom du fichier
        touch -t ${BASH_REMATCH[1]}${BASH_REMATCH[2]}.${BASH_REMATCH[3]} "${nomFich}"
    } || exit 1
}
done

Il suffira de donner le nom du répertoire en paramètre de la commande :

nomDuScriptAlancer répertoire/Des/FichiersJpg/

=======
NOTES :

- Il faudra penser à ajouter le caractère / à la fin du nom de répertoire,
mais si, quand on entre le nom du répertoire, on utilise l'autocomplétion (touche TAB)
alors le caractère / final sera automatiquement ajouté par l'autocomplétion.

- Pour faire bien, on aurait pu aussi ajouter des contrôles d'erreur plus précis,
mais tel quel, le script renverra le code d'erreur 1 s'il ne trouve AUCUN fichier .jpg ayant cette forme de nom spécifique,
ou s'il a un problème d'accès à ces fichiers comme par exemple si l'utilisateur n'est pas le propriétaire des fichiers.

Dernière modification par MicP (Le 27/08/2016, à 05:46)

Hors ligne

#18 Le 26/08/2016, à 23:08

OrionB

Re : Quel commande ou quel script pour gérer mes photos ?

Super, merci beaucoup ça devrait aller ! Je m'occupe de mes photos très bientôt.


Merci beaucoup encore !

OrionB


Étudiant en PTSI. A lu "Reprenez le contrôle à l'aide de Linux" du Site du Zéro en 2015.

Hors ligne

#19 Le 27/08/2016, à 05:43

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

C'est avec plaisir, et de mon côté, je remercie pingouinux pour son aide.

J'ai modifié le script de façon à ce qu'il ne traite que les fichiers dont le nom commence par IMG_

On pourrait aussi y rajouter des fonctionnalités supplémentaires comme des messages d'erreur, d'aide ou/et d'accueil,le traitement de sous-répertoirtes, etc.
Mais plus il sera simple, moins il sera difficile à comprendre et à utiliser.

Dernière modification par MicP (Le 27/08/2016, à 06:00)

Hors ligne

#20 Le 27/08/2016, à 06:33

pingouinux

Re : Quel commande ou quel script pour gérer mes photos ?

MicP #17 a écrit :
for nomFich in "${1}"IMG_*.jpg; do {

Tu peux remplacer la ligne précédente par

for nomFich in "${1:-.}"/IMG_*.jpg; do {

pour permettre d'appeler le script indifféremment

nomDuScriptAlancer

ou

nomDuScriptAlancer répertoire/Des/FichiersJpg/

ou

nomDuScriptAlancer répertoire/Des/FichiersJpg

Si $1 n'est pas défini, il sera remplacé par un . (point)
Deux / consécutifs dans un nom de chemin ne gênent pas.

Complété

Dernière modification par pingouinux (Le 27/08/2016, à 06:46)

Hors ligne

#21 Le 27/08/2016, à 07:09

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

Merci pingouinux

Ci-dessous le script modifié :

#!/bin/bash

# Source : https://forum.ubuntu-fr.org/viewtopic.php?id=1995298

# Modifie la date/heure des fichiers .jpg en fonction de leur nom.
# Les noms des fichiers devront être de la forme : IMG_AAAAMMJJ_HHMMSS.jpg

# Donner en paramètre le nom du répertoire contenant les fichiers à traiter.
# Si aucun paramètre n'est donné, le répertoire courant est traité.

maRegex='IMG_([0-9]{8})_([0-9]{4})([0-9]{2})'
for nomFich in "${1:-.}"/IMG_*.jpg; do {
    [[ ${nomFich} =~ ${maRegex} ]] && {
        # Date du fichier remise en fonction du nom du fichier
        touch -t ${BASH_REMATCH[1]}${BASH_REMATCH[2]}.${BASH_REMATCH[3]} "${nomFich}"
    }
}
done

Dernière modification par MicP (Le 14/03/2017, à 11:49)

Hors ligne

#22 Le 27/08/2016, à 07:34

Watael

Re : Quel commande ou quel script pour gérer mes photos ?

heu, c'est pas un peu raide de sortir du script avec une erreur si un nom de fichier du répertoire n'a pas le format défini dans la regex ?


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#23 Le 14/03/2017, à 11:49

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

Je repasse par là : j'avais complètement zappé le message de watael, (et c'est vraiment dommage)

Effectivement : c'est un peu raide => Je modifie le script en supprimant ce qui est barré ci-dessous


        touch -t ${BASH_REMATCH[1]}${BASH_REMATCH[2]}.${BASH_REMATCH[3]} "${nomFich}"
    } || exit 1

Dernière modification par MicP (Le 14/03/2017, à 11:55)

Hors ligne

#24 Le 14/03/2017, à 12:41

moko138

Re : Quel commande ou quel script pour gérer mes photos ?

OrionB a écrit :

c'est que j'ai fait des sauvegardes des photos de mon téléphone mais du coup la date est quasiment la même pour tous les fichiers : la date de la sauvegarde.

Pour éviter ce souci à l'avenir, fais ta sauvegarde avec

sudo cp -av [source]  [destination]

-a : conservation des attributs (dont la date, le propriétaire, les droits etc.)

D'ailleurs, si les originaux sont encore sur ton phone, il est encore temps !


%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel :  À la découverte de dcraw

Hors ligne

#25 Le 14/03/2017, à 13:21

MicP

Re : Quel commande ou quel script pour gérer mes photos ?

C'est beaucoup mieux, comme le propose moko138 de régler le problème à la source.

Dernière modification par MicP (Le 14/03/2017, à 13:22)

Hors ligne