#1 Le 02/05/2013, à 21:54
- Flying-Fish
[Résolu] Trier ses photos par type d'appareil photo
Salut,
Voilà, comme indiqué dans le titre, j'aimerai pouvoir trier un grand nombre de photos (toutes en vrac dans un dossier unique) par type d'appareil photo.
Par exemple, faire en sorte que toutes les photos prises grâce à un Canon EOS aillent dans un dossier "Canon EOS", celles prises par un Sony Cyber-Shot dans un dossier "Sony Cyber-Shot" etc...
Y a-t-il un moyen de faire ça (logiciel, script...) ?
Merci par avance.
Fish
Dernière modification par Flying-Fish (Le 07/02/2014, à 14:38)
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#2 Le 02/05/2013, à 22:19
- toutafai
Re : [Résolu] Trier ses photos par type d'appareil photo
Bonsoir,
Peut etre en nommant les partitions des differentes carte mémoire de tes apn. Apres il suffirais de creer un point de montage pour ces partition pointant dans les dossiers qui vont bien.
Tombé dans l'informatique étant petit, j'en ai fait mon métier. Utilisateur d'Ubuntu depuis novembre 2006, actuellement sous 20.04 x64 (Que d'évolution
depuis Dapper Drake ! Ça rajeunit pas ^^^).
Hors ligne
#3 Le 02/05/2013, à 22:22
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Pas bête mais j'pensais plus à un système ""après-coup" : je voudrais trier les photos qui malheureusement sont en vrac dans un seul gros dossier et qui s'accumulent depuis des années.
Peut-être avec une moulinette qui se servirait des données EXIF ?
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#4 Le 02/05/2013, à 23:03
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
bonsoir
la commande
exiftool -U /chemin/image.jpg | grep Make
te donne l'APN utilisé (et si apres tu veux trier par objectif : change Make en Lens ID, etc)
Je pense qu'a partir de ca, tu peux creer un script bash assez facilement en testant tous les fichiers un à un et en les deplacent apres vers un autre dossier)
EDIT : change le Make en "Camera Model Name" si tu utilise une meme marque pour tous tes APN
Dernière modification par PI3RR3-29 (Le 02/05/2013, à 23:05)
Hors ligne
#5 Le 02/05/2013, à 23:05
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Salut et merci.
Je suis un peu nul en scripts mais j'imagine qu'avec les commandes find, exiftool et mv on doit pouvoir y arriver ?
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#6 Le 02/05/2013, à 23:12
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
il te faudra aussi surement un mkdir (make directory) à un moment ou un autre (soit pour trier par APN par date soit pour trier par date par apn)
Si tu veux, je peux relechir a un script, meme si il risque d etre un peu lourd juste pour faire ca.
Hors ligne
#7 Le 02/05/2013, à 23:13
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Euh ben ... j'suis pas contre un p'tit coup d'main.
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#8 Le 02/05/2013, à 23:39
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
voici un debut (non testé) :
#!/bin/bash
#########################################################################################
# _______ ________ ______ _______ _______ ______ _______ _______ #
# || __ \ ________ _____\\ || __ \ || __ \ _____\\ _______\ / ____ | #
# || | | | || || || | | | || | | | || || | |___| | #
# || |__| / || ----| || |__| / || |__| / ---| ____ // \_______| #
# ||------ || ----| ||------ ||------ ---| ____ // || #
# || ___||___ _____|| || \\\ || \\\ _____|| //____ ______|| #
# || ________ _____// || \\\ || \\\ _____// //______ _______/ #
#########################################################################################
####################################MAI2013##############################################
#####################################CC-By###############################################
#####################################V1.1################################################
#########################################################################################
#Il faut changer "Modele 1" et "Modele 2" par le nom de modele de l'APN
#pour cela, executer la commande [ exiftool -U chemin | grep "Camera Model Name" ]
#puis copier le nom a droite (attention a ne pas copier les espaces avant et apres ;) )
#on peut le faire pour autant d'APN que l'on veut en ajoutant des lignes (qui commencent par elif) et des dossiers
#il ne faut pas s'inquieter si il sort un message d erreur au debut en disant que le dossier MODELE1 existe deja
echo "veuillez entrer le chemin du dossier"
read -e chemin # entree semi-automatique
cd $chemin #on se place dans le repertoire
rename 's/\s+/_/g' * #on remplace les espaces de tous les noms de fichier par des underscore pour eviter les problemes
ls > listephotos.txt #on lit la liste des photos et on sauvegarde le resultat dans 1 fichier
mkdir MODELE1 #on cree les 2 dossiers : 1 par APN
mkdir MODELE2
while read line #tantqu'il y a une ligne a lire dans le fichier, on lit
do name=$(exiftool -U $line | grep "Camera Model Name")
if [ "$name" = "Camera Model Name : MODELE1" ] ; then
mv $line MODELE1/
elif [ "$name" = "Camera Model Name : MODELE2" ] ; then
mv $line MODELE2/
fi
done < listephotos.txt #on precise que la lecture est celle du fichier
rm listephotos.txt #on supprime le fichier
echo ""
echo "operations terminees"
echo ""
echo "Merci d'avoir utilise mon script"
echo " PI3RR3-29"
il faut connaitre exactement le modele de l'apn : pour cela lance la commande sur des photos "exiftool -U chemin | grep "Camera Model Name"" et fait un Copier coller du nom a la place de MODELE1 partout ou il apparait.
Si t'as plus de 2 apn, tu copis la ligne 42/43 et tu cree de nouveaux dossier.
Je suis un peu crevé, donc je m'y repencherais demain
EDIT : voici un script qui fonctionne
EDIT2 : ajout de la commande
rename 's/\s+/_/g' *
pour les espaces
Dernière modification par PI3RR3-29 (Le 03/05/2013, à 14:16)
Hors ligne
#9 Le 03/05/2013, à 03:26
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Hey, merci PI3RR3-29 pour le coup d'main. Je reviens du boulot, j'vais m'coucher mais demain je teste ça dès que j'me lève.
Fish
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#10 Le 03/05/2013, à 06:31
- pingouinux
Re : [Résolu] Trier ses photos par type d'appareil photo
Bonjour,
Voici une méthode pour avoir la liste des appareils photo utilisés :
cd /.../le_dossier_où_sont_les_photos
for i in *; do exif "$i" | grep 'Manufacturer\|Model' | cut -d\| -f 2 | paste - -;done | sort -u
Hors ligne
#11 Le 03/05/2013, à 10:16
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
bonjour
Pingouinux, pourrais tu expliquer ton code s'il te plait ? (je ne reussis pas à le comprendre)
Hors ligne
#12 Le 03/05/2013, à 12:21
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Salut à tous,
Merci pour votre aide.
@ Pingouinux : es-tu sûr de ta commande ? Chez moi elle ne renvoie rien.
exiftool -U chemin | grep "Camera Model Name"
, proposée par PI3RR3-29 semble lister les appareils.
@ PI3RR3-29 : pour l'instant, le script arrive à me créer des dossiers aux noms des modèles d'appareils photos mais il me répond :
Test.sh: ligne 15: Erreur de syntaxe près du symbole inattendu « done »
Test.sh: ligne 15: `done< listephotos.txt #on precise que la lecture est celle du fichier'
Fish
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#13 Le 03/05/2013, à 13:00
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
en effet, j'ai mis le "do" dans la variable alors qu'il aurait fallu le mettre devant.
Je change aussi quelques autres petits trucs au passage (et il marche maintenant bien chez moi).
J'edite mon autre message
edit : ca y est
Dernière modification par PI3RR3-29 (Le 03/05/2013, à 13:14)
Hors ligne
#14 Le 03/05/2013, à 13:39
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Hey, merci PI3RR3-29.
Juste une petite question cependant. Quand tu écris
puis copier le nom a droite (attention a ne pas copier les espaces
, si mon appareil apparait grâce à exiftool comme
Camera Model Name : Canon EOS 300D DIGITAL
Est-ce qu'il faut que dans le script j'écrive "Canon EOS 300D DIGITAL" ou "CanonEOS300DDIGITAL" ou bien est-ce que juste "300D" suffit ?
Fish
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#15 Le 03/05/2013, à 13:45
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
c'est "Canon EOS 300D DIGITAL" qu'il faut copier (en faite, je parlais des espaces avant et apres).
(ou alors, pour ne pas t'embeter a faire attention aux espaces, tu copies la ligne "Camera Model Name : Canon EOS 300D DIGITAL" et tu remplaces toute la ligne "Camera Model Name : MODELE1")
Mais pour le dossier (lignes mkdir et mv) , tu peux remplacer juste "MODELE1" par "300D" tant que tu sais que c'est un Canon (c'est juste que c'eetait plus simple a presenter ainsi et on comprend tout de suite sans explications)
edit : je reflechis actuellement a une v2 qui te rentrerais automatiquement les noms. Voudras tu que je la mette ?
Dernière modification par PI3RR3-29 (Le 03/05/2013, à 14:00)
Hors ligne
#16 Le 03/05/2013, à 14:05
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Encore moi... (désolé)
ça me retourne :
File not found: AIRBUS
File not found: TOULOUSE
File not found: 1.jpg
lorsque le fichier photo contient des espaces (dans le cas présent AIRBUS TOULOUSE 1.jpg).
edit : je reflechis actuellement a une v2 qui te rentrerais automatiquement les noms. Voudras tu que je la mette ?
Vi vi vi (comment dire non à une telle proposition ?) !!!
Dernière modification par Flying-Fish (Le 03/05/2013, à 14:06)
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#17 Le 03/05/2013, à 14:14
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
un espace dans un nom ? sacrilege !
le commande suivante devrait te changer tous les espaces par un _ et le script fonctionnera alors (car un prend les espaces pour un nouveau fichier a traiter et donc a la place de "AIRBUS TOULOUSE1.JPG" il te traitera les photos "AIRBUS" et "TOULOUSE1.JPG" et manque de chance, elles n existent pas).
(J'ajoute cette commande au script)
rename 's/\s+/_/g' *
Hors ligne
#18 Le 03/05/2013, à 14:33
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Super excellent, ça marche !
Merci énormément PI3RR3-29 !
Alors certes, ça me crée un dossier "DIGITAL" et dedans 4 sous-dossiers "300D", "350D", "Canon" et "EOS" mais ce n'est pas très grave, en adaptant un peu, je devrais pouvoir arriver à mes fins !
Quoiqu'il en soit, encore merci beaucoup.
Fish
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#19 Le 03/05/2013, à 14:38
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
dr
tu as mis quoi comme "MODELE1" aux lignes "mkdir" et "mv" ?
Hors ligne
#20 Le 03/05/2013, à 14:43
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Voici ton script mais avec mes modèles d'APN.
#!/bin/bash
#########################################################################################
# _______ ________ ______ _______ _______ ______ _______ _______ #
# || __ \ ________ _____\\ || __ \ || __ \ _____\\ _______\ / ____ | #
# || | | | || || || | | | || | | | || || | |___| | #
# || |__| / || ----| || |__| / || |__| / ---| ____ // \_______| #
# ||------ || ----| ||------ ||------ ---| ____ // || #
# || ___||___ _____|| || \\\ || \\\ _____|| //____ ______|| #
# || ________ _____// || \\\ || \\\ _____// //______ _______/ #
#########################################################################################
####################################MAI2013##############################################
#####################################CC-By###############################################
#####################################V1.1################################################
#########################################################################################
#Il faut changer "Modele 1" et "Modele 2" par le nom de modele de l'APN
#pour cela, executer la commande [ exiftool -U chemin | grep "Camera Model Name" ]
#puis copier le nom a droite (attention a ne pas copier les espaces avant et apres ;) )
#on peut le faire pour autant d'APN que l'on veut en ajoutant des lignes (qui commencent par elif) et des dossiers
#il ne faut pas s'inquieter si il sort un message d erreur au debut en disant que le dossier Canon EOS 300D DIGITAL existe deja
echo "veuillez entrer le chemin du dossier"
read -e chemin # entree semi-automatique
cd $chemin #on se place dans le repertoire
rename 's/\s+/_/g' * #on remplace les espaces de tous les noms de fichier par des underscore pour eviter les problemes
ls > listephotos.txt #on lit la liste des photos et on sauvegarde le resultat dans 1 fichier
mkdir Canon EOS 300D DIGITAL #on cree les 2 dossiers : 1 par APN
mkdir Canon EOS 350D DIGITAL
while read line #tantqu'il y a une ligne a lire dans le fichier, on lit
do name=$(exiftool -U $line | grep "Camera Model Name")
if [ "$name" = "Camera Model Name : Canon EOS 300D DIGITAL" ] ; then
mv $line Canon EOS 300D DIGITAL/
elif [ "$name" = "Camera Model Name : Canon EOS 350D DIGITAL" ] ; then
mv $line Canon EOS 350D DIGITAL/
fi
done < listephotos.txt #on precise que la lecture est celle du fichier
rm listephotos.txt #on supprime le fichier
echo ""
echo "operations terminees"
echo ""
echo "Merci d'avoir utilise mon script"
echo " PI3RR3-29"
Peut-être manque-t-il des guillemets ?
Fish
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#21 Le 03/05/2013, à 14:44
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
tu as trouvé toi meme l'erreur
( mkdir "Canon EOS 300D DIGITAL" et de meme pour l'autre, mais enleve ces espaces et mets des _ a la place)
et sinon, met juste 300D et 350D : c'est aussi simple
Dernière modification par PI3RR3-29 (Le 03/05/2013, à 14:46)
Hors ligne
#22 Le 03/05/2013, à 14:57
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Aaaaah, faut que je parte. Mais dès que je reviens je teste ça et te tiens au courant.
Merci encore.
Fish
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#23 Le 03/05/2013, à 17:11
- pingouinux
Re : [Résolu] Trier ses photos par type d'appareil photo
Pingouinux, pourrais tu expliquer ton code s'il te plait ? (je ne reussis pas à le comprendre)
for i in *; do exif "$i" | grep 'Manufacturer\|Model' | cut -d\| -f 2 | paste - -;done | sort -u
exif ma_photo.jpg fournit un certain nombre de renseignements dont ces deux lignes :
Manufacturer |SONY
Model |DSC-W100
qui sont récupérées par le grep
exif ma_photo.jpg | grep 'Manufacturer\|Model' | cut -d\| -f 2
SONY
DSC-W100
récupère la seconde colonne (colonnes séparées par |)
paste - - récupère deux lignes consécutives sur l'entrée standard, et les affiche côte-à-côte (séparées par une tabulation)
sort -u ne garde qu'un exemplaire de chaque modèle
@ Pingouinux : es-tu sûr de ta commande ? Chez moi elle ne renvoie rien.
J'ai une version en anglais. Pour la version française, il faut remplacer Manufacturer par Constructeur, et Model par Modèle.
Voici un script (version anglaise) qui crée les répertoires et déplace les photos (même si les noms contiennent des espaces) :
$ cat deplacement_photos.sh
#!/bin/bash
for i in "$@"; do
[ ! -f "$i" ] && continue
manumod=$(exif "$i" 2>/dev/null| grep 'Manufacturer\|Model' | cut -d\| -f 2 | paste - - | sort -u)
[ "$manumod" ] || continue
[ -d "$manumod" ] || mkdir -p "$manumod"
mv -i "$i" "$manumod"
done
Pour le lancer :
cd /.../le_dossier_où_sont_les_photos
/.../chemin_du_script/deplacement_photos.sh *
Hors ligne
#24 Le 03/05/2013, à 22:24
- Flying-Fish
Re : [Résolu] Trier ses photos par type d'appareil photo
Hola, n'en jetez plus, je me retrouve avec 2 excellents scripts qui fonctionnent très bien, c'est largement assez !
Merci donc à vous 2 pour votre aide et votre patience.
Bye
Fish
Dell Latitude 5480
Mint Xfce
5.15.0-84-generic x86_64
Xfce 4.18.1
Hors ligne
#25 Le 03/05/2013, à 23:04
- PI3RR3-29
Re : [Résolu] Trier ses photos par type d'appareil photo
merci Pingouinux pour cette explication.
voici la v2 (pas tout a fait finie, mais qui fonctionne) et qui reprend un bout du code de Pingouinux (je ne sais pas si tu vas l'utilisé, mais comme je l'ai fini, autant le partager) :
#!/bin/bash
#########################################################################################
# _______ ________ ______ _______ _______ ______ _______ _______ #
# || __ \ ________ _____\\ || __ \ || __ \ _____\\ _______\ / ____ | #
# || | | | || || || | | | || | | | || || | |___| | #
# || |__| / || ----| || |__| / || |__| / ---| ____ // \_______| #
# ||------ || ----| ||------ ||------ ---| ____ // || #
# || ___||___ _____|| || \\\ || \\\ _____|| //____ ______|| #
# || ________ _____// || \\\ || \\\ _____// //______ _______/ #
#########################################################################################
####################################MAI2013##############################################
#####################################CC-By###############################################
#####################################V2.0################################################
#########################################################################################
function liste {
for j in *.*
do test=$(exiftool "$j" | grep 'Model' | cut -d\: -f 2 | paste -)
# si on veux aussi la marque : for j in *; do exiftool "$j" | grep 'Make\|Model' | cut -d\: -f 2 | paste - -;done | sort -u
test=$(echo $test | sed 's/ /_/g')#on remplace les espaces par des underscores pour toutes les images
if [ "$test" = "$line" ] ; then
mv "$j" "$line"
echo $j "fait"
fi
done
}
echo "veuillez entrer le chemin"
read -e chemin
cd $chemin
rename 's/\s+/_/g' *
echo "" > listeapn.txt
echo "Debut de l'analyse des fichiers"
for i in *.* #pour tous les fichiers du dossier ayant un point dans leur nom
do exiftool "$i" | grep 'Model' | cut -d\: -f 2 | paste - #regarder le modele de l'apn, ne garder que ce resultat (couper/coller)
done | sort -u >> listeapn.txt #ne garder qu'un exemplaire par type d apn et le mettre dans un fichier
echo "Analyse des fichiers fini"
while read line #lire chaque ligne du fichier (cf le done ci dessous)
do line=$(echo $line | sed 's/ /_/g') #on supprime les espaces des noms d apn
if [ -d "$line" ] ; then #si il y a un dossier avec ce nom d apn
liste #appel a la fonction
elif [ "$line" = "" ] ; then #si il y a un dossier avec un nom vide (arrive si il y a deja un dossier)
echo ""
else #sinon : cad qu'il n'y a pas de dossier avec ce nom d apn
mkdir "$line" #on cree le dossier
liste
fi
done < listeapn.txt #c'est dans ce fichier que l'on lit les lignes
rm listeapn.txt
echo "Merci d'avoir utilise mon script"
Hors ligne