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 :

ls finder bash sort : tris différents des fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 13
    Points
    13
    Par défaut ls finder bash sort : tris différents des fichiers
    Bonjour à tous

    Voici tout de suite mon problème.

    J'ai une suite de fichier nommé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    fichier001
    fichier0001
    fichier00001
    fichier00002
    fichier0000100
    fichier00001000
    ...
    J'aimerai procédé a un renommage de tout ces fichiers en bash d'après un listing.
    Le script prend le 1er fichier et le renomme avec le 1er nom du listing et ainsi de suite

    Mon problème est que l'ordre affiché dans ma fenêtre n'est pas le même que si je fais un lscomme mon script utilise un ls et une boucle, le remplacement du nom de fichier ne se fait pas sur le bon fichier.
    Quand je fais un sort -n, l'ordre n'est pas le même non plus.

    extrait du script utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ls monChemin/ >classeTemp.txt
     
                    for ((i=1 ; NombreFichier+1 - $i ; i++))
                    do
                            nomPhotoOriginal=$(cat classeTemp.txt | head -n $i | tail -n 1)
                            nomPhotoFinal=$(cat $listing | head -n $i | tail -n 1)
                            mv monChemin/$nomPhotoOriginal monChemin/$nomPhotoFinal".jpg"
                    done


    Quelqu'un a-t-il une solution ?

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2013
    Messages : 70
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    Citation Envoyé par niroub Voir le message
    Mon problème est que l'ordre affiché dans ma fenêtre n'est pas le meme que si je fais un 'ls'
    De quelle fenêtre parles tu ?

    Sinon, pour la boucle, peut-être plutôt quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rep=monChemin
    for fic in "$rep"/*
    do
        read -ru 3 || break # on sort de la boucle si tous les noms de fichiers dans $listing ont été consommés
        mv "$fic" "$rep/$REPLY.jpg"
    done 3< "$listing"

    Citation Envoyé par niroub
    mv monChemin/$nomPhotoOriginal monChemin/$nomPhotoFinal".jpg"
    Là, tu places les guillemets au seul endroit où il n'y en a pas besoin !

  3. #3
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Quand je fais un sort -n , l'ordre n'est pas le meme non plus.
    Ah ça c'est sûr ! Quand tu changes le type de tri, tu changes le résultat. Tu comprends ce que tu fais, ou bien ?...

    sort -n est un classement en considérant les valeurs numériques. "3" est devant "12" numériquement mais derrière alphabétiquement.

    D'autre part, voici une source d'inspiration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while IFS='' read -r lineFic1 <&3 && IFS='' read -r lineFic2 <&4 ; do echo "mv $lineFic1 $lineFic2"; done 3<fic1.txt 4<fic2.txt
    Autre idée:
    Si tu utilises tail et head pour avoir la ième ligne, utilise plutôt sed.
    Exemple pour avoir la 17ème ligne d'un fichier texte:
    ou
    (au fait: cat est inutile.)

    Enfin, on utilises pas ls dans un script. On utilise find ou stat suivant le besoin.
    Cela ne règle pas ton problème d'ordre, mais voilà.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par niroub Voir le message
    Mon problème est que l'ordre affiché dans ma fenêtre n'est pas le meme que si je fais un 'ls'
    Quel est l'ordre affiché dans ta fenêtre?
    Ou, plus précisément, dans quel ordre souhaites-tu énumérer tes fichiers?

    PS: si, dans ta fenêtre, tu affiches des icônes que tu as toi-même triées à la main, àmha ça va pas être facile!!!

  5. #5
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Ah ça c'est sûr ! Quand tu changes le type de tri, tu changes le résultat. Tu comprends ce que tu fais, ou bien ?... -->Putin ! toi tu sais parler aux gens ;-)

    Bon je vais essayer de réexpliquer mon problème car je n'ai pas de problème de boucle, meme si je prend en compte votre façon de faire qui est surement meilleure que la mienne.

    Je suis sur mac (oubli de précision) :
    dans ma fenêtre finder, le classement de mes fichiers se fait dans cet ordre : (exemple)

    IMG_6210.jpeg
    IMG_62015412.jpg
    IMG_62045412.jpg
    IMG_62085412.jpg



    Pour renommer ces fichiers, j'ai un listing (de noms) sachant que je fais une boucle pour renommer tous ces fichiers.
    Malheureusement que je fasse une boucle d'après un 'ls' ou meme sous la forme 'for fichier in $' le classement n'est pas bon.
    Donc le renommage ne se fait pas correctement.

    Par exemple dans ce cas "IMG_6210.jpg" se trouve avant "IMG_62015412.jpg" sur ma fenêtre finder.
    Et sur mon 'ls' il se trouve en dernier position (meme avec un sort -n)

    Autre précision tous les fichiers ne commencent pas forcement par IMG_

    Je me dit que mon mac fait un tri d'après un certain ordre et c'est cet ordre qu'il faudrait retrouver. A moins que vous voyez une autre solution.

    Merci

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par niroub Voir le message
    Je suis sur mac (oubli de précision) :
    Précision intéressante!

    Ce forum-ci https://www.developpez.net/forums/f3...commandes-gnu/ est en principe réservé aux utilisateurs pur linux.

    Le forum pour les utilisateurs de la pomme (dont moi!) est plutôt https://www.developpez.net/forums/f1...mmandes-posix/

    Un administrateur déplacera peut-être ton message dans la catégorie adéquate...

    Mais ce n'est pas vraiment fondamental pour ton problème en particulier... une fois le tri déterminé...

    Mais attention!
    Les options du "ls" (POSIX) de macos sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SYNOPSIS
         ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]
    Je ne suis pas sûr que ce soient les mêmes que pour les linuxiens

    Oui N_BaH, je sais qu'on ne doit normalement pas utiliser "ls" dans un script, mais ses options de tri sont quand même bien pratiques et plus simples que "find" ou autres...

    dans ma fenêtre finder, le classement de mes fichiers se fait dans cet ordre : (exemple)

    IMG_6210.jpeg
    IMG_62015412.jpg
    IMG_62045412.jpg
    IMG_62085412.jpg

    [snip]
    Je me dit que mon mac fait un tri d'après un certain ordre et c'est cet ordre qu'il faudrait retrouver. A moins que vous voyez une autre solution.
    Nous y voilà!

    C'est le Finder (que je connais bien!) qui affiche les fichiers dans un certain ordre.
    Cet ordre dépend de plusieurs paramètres que tu dois nous transmettre afin que l'on puisse t'aider à déterminer cet ordre.

    D'abord il faudrait que tu nous indiques quel type d'affichage tu utilises:
    - icônes
    - liste
    - colonnes
    - Cover Flow

    Tu peux trouver cette information:
    - en regardant le bouton à 4 positions de la fenêtre, à droite du bouton d'historique "< >"
    - en sélectionnant la fenêtre en question (cliquer un coup sur son bandeau), puis en cliquant menu "Présentation" et en regardant lequel des 4 premiers items est sélectionné:
    -- Par icônes
    -- Par liste
    -- Par colonnes
    -- Sous forme de Cover Flow


    À suivre...

  7. #7
    Membre habitué
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2013
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Décembre 2013
    Messages : 70
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    Et les fichiers IMG_*.jpg, il sont bien placés avant les fichiers TOTO_*.jpg par exemple ?
    Si c'est le cas, j'ai l'impression que finder fait un mix de tri alphabétique et de tri numérique.

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 278
    Points : 12 726
    Points
    12 726
    Par défaut
    Bonjour,

    Et pourquoi ne pas trier les 2 parties, comme ça, on ne se pose pas de question.

    Sinon, par défaut, ls ou le globbing * (coté bash) font un tri alphabétique qui peut aussi être insensible à la casse selon la locale utilisée (il est donc fortement conseillé d'utilisé la locale C pour ce genre d'action).

    find, ne trie pas, il traite par ordre d'arrivé sur le disque.
    Cordialement.

  9. #9
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Postmortem Voir le message
    Et les fichiers IMG_*.jpg, il sont bien placés avant les fichiers TOTO_*.jpg par exemple ?
    Si c'est le cas, j'ai l'impression que finder fait un mix de tri alphabétique et de tri numérique.
    Oui, si l'on suppose que la fenêtre Finder est ouverte en mode "Par liste" et que la colonne "Nom" contient la flèche de tri active, on a effectivement un tri spécial...

    Si aucun nom de tes fichiers ne contient de caractères spéciaux (espace, tabulation, return), alors tu peux utiliser l'astuce suivante (trouvée sur 65bits.com):

    Dans la fenêtre Finder, tu presses cmd-A puis cmd-C et tu stockes alors la liste de tes fichiers dans le presse-papiers, que tu conserves le temps de la coller à l'intérieur du script suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    i=1
    for nomPhotoOriginal in cmd-V
                    do
                            nomPhotoFinal=$(sed -n "${i}p" "${listing}")
                            mv "${nomPhotoOriginal}" "monChemin/${nomPhotoFinal}.jpg"
                            ((i++))
                    done
    En remplaçant la chaîne "cmd-V" dans le script par le résultat du collage via la commande "cmd-V"!

    Oui, je sais, c'est du codage en dur, mais, manifestement, la liste des noms de remplacement est aussi codée en dur!

    PS: on peut faire plus propre, mais il faut alors passer par "osascript" que je ne maîtrise que très très peu.
    et comme, de toute façon, la liste de remplacement est codée en dur...

    Remarque: Si le nom de certains fichiers contient des espaces, tu peux coller le contenu de ton presse-papiers dans un fichier "classeTemp.txt", puis faire (merci Flodelarab):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    gsed -e 's|\([^\]\) |\1\n|g' "classeTemp.txt" \
     | while IFS='' read -r nomPhotoOriginal && IFS='' read -r nomPhotoFinal <&4
        do echo mv "${nomPhotoOriginal}" "monchemin/${nomPhotoFinal}.jpg"
    done 4<"${listing}"
    en utilisant "gsed" (GNU sed), normalement disponible sur mac (ou installable)...

    et en supprimant le "echo" si ça te convient.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Alors tout d'abord en réponse à jack-ft

    L'affichage est par liste (mais cela ne modifie pas l'ordre dans les autres cas : colonne, icône...)

    Pour le CMD V, je pense que cela marcherai mais ça devient trop compliqué vu le nombre et le gain de temps n'est plus optimisé.


    Le dossier contenant les photos contient lui meme plusieurs sous-dossier. Contenant chacun un nombre variable de photo.

    En fait les photos sont normalement classés par ordre ou elles ont été prises (leur nom étant attribué par l'appareil photo)
    Le listing lui, est classé selon l'ordre ou les photos ont été prises. (donc dans le meme ordre d'ou un renommage possible en boucle)

    Le problème est que quand on décharge les photos, l'appareil photo reprend un nom qui recommence a zéro.

    Le dossier global des photos peut contenir parfois jusqu'a plus de 20 dossiers contenant plus de 30 photos. (photo d'école- soit plus de 1000 photos parfois)

    Mon script marche sur l'ensemble du dossier mais ce problème de tri m'est apparu.
    Le script formate le listing sous ce format "classe_Nom_Prénom" sans effectuer de tri bien sur car l'ordre est déjà bon.
    Les photos sont "normalement" classées dans chaque dossier dans le meme ordre que le listing.

  11. #11
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par niroub Voir le message
    Le problème est que quand on décharge les photos, l'appareil photo reprend un nom qui recommence a zéro.
    Normalement, ceci est réglable!
    On peut lui demander de ne pas remettre ce compteur à 0.
    Malheureusement, je sais plus si c'est sur l'appareil photo lui-même ou dans l'appli de chargement des photos (comme Photos.app ou Nikon Transfer.app)...

  12. #12
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    mais pourquoi passer par finder ?
    si tu veux le même type de tri, utilise le même programme !

    d'où vient ce 'listing' de noms de fichiers ? pourquoi ne pas le trier avant d'en parcourir le contenu dans le script ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    exec {foo}< <(sort listingNoms)
    for f in "$repertoire/*"
    do
       test -f "$f" || continue
       read -u $foo nouvNom
       : ce qu il faut faire
    done
    exec {foo}<&-
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Malheureusement le listing est fait à la volée au fur et à mesure de la prise de vue.

    Un listing est existant et modifié (pointage) au fur et à mesure de l'ordre de passage.
    changement de l'ordre de passage des élèves, élève absent ou non sur la liste...)
    Ce qui donne que le listing est complet et bon a la fin des prises de vues.

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    il faut que nous expose au propre les processus en jeu :

    on a la liste des élèves, triée par ordre alphabétique
    les élèves sont pris en photo de manière désordonnée
    leur nom est alors coché sur la liste

    quand toute la liste est cochée, on veut renommer les photos avec les noms des élèves.

    comment faire coïncider une liste triée des élèves avec l'ordre aléatoire de leur passage ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Non tout est en ordre et coïncide exactement :

    La liste des élèves est complète et classé par ordre de classe puis par ordre alphabétique.

    La prise de vue ne se déroule malheureusement pas comme le listing donc celui ci est corrigé au fur et a mesure.
    si telle personne passe avant une autre alors le listing est modifié.

    Les photos sont renommées avec l'appareil et incrémenté par celui-ci.

    Donc on a photo 1= nom 1

    le tri par classe se fait par le script qui va chercher la liste des photos dans le répertoire puis la renomme avec les noms de la bonne classe :
    exemple :
    Classe 4A
    REPERTOIRE DES PHOTOS : ls /PHOTO/4A --> donne un ordre théoriquement classé de la liste de fichier du répertoire 4A
    LE LISTING : cat $listing | grep ^4A --> me donne les noms d'élèves dans l'ordre du listing (comme le listing est bon par rapport aux photos il n'y pas de problèmes)

    Cependant de temps en tant j'ai des noms de photos différents qui m'apparaissent bien classé quand je regarde dans une fenêtre finder MAC mais qui ne le sont plus quand le programme fait le renommage.
    d'ou :
    IMG_6210 --> nom1
    IMG_62015412 --> nom2

    et après le renommage de mon script :
    IMG_6210=nom2
    IMG_62015412=nom1

    Je ne sais pas si je suis très clair. J'utilise Xnview pour le renommage, mais dossier par dossier
    J'aurais voulu faire un script global (ce que j'ai déjà fait en fait sauf cette erreur de renommage)qui marche sur l'ensemble des dossier et qui fasse d'autres petites choses en plus(copie ...)
    De maniere a gagner du temps sur le traitement d'un millier de photos par jour.

  16. #16
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    je persiste : il faut utiliser le même outil de tri sur les deux listes (listing des noms et liste des fichiers).

    sinon, effectivement, il y a des risques d'incohérence.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2013
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2013
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Bah ca me parait difficile car la liste des noms ne doit pas être triée car elle est déjà en ordre.
    la liste des photos non plus d'ailleurs, puisqu'elle est censé être également dans l'ordre (sauf ce problème de tri bash)

    Je vais mettre un contrôle des noms de fichier en attendant de trouver une solution.
    je controle les noms de fichier et affiche ceux qui sont susceptibles de poser problème et je corrigerai à la mano pour l'instant.

    Sinon peut être passer par osascript comme le suggérer Jack-ft ? car le copier coller de la liste dans un fichier respecte l'ordre finder, mais c'est beaucoup trop long de procéder ainsi.

    Merci en tout cas de vous pencher sur mon problème.

  18. #18
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par niroub Voir le message
    En fait les photos sont normalement classés par ordre ou elles ont été prises (leur nom étant attribué par l'appareil photo)
    Le listing lui, est classé selon l'ordre ou les photos ont été prises. (donc dans le meme ordre d'ou un renommage possible en boucle)
    Tu indiques clairement que l'ordre des photos et l'ordre du listing sont censés être synchrones car ils prennent en considération l'ordre de prise de vue.

    Je vois peut-être 2 possibilités:

    1) Est-ce que la commande "ls -t" ferait l'affaire?
    Tu peux tester à la main avec "ls -lt" qui trie par date de dernière modification des fichiers.
    Si les photos n'ont pas été retouchées, c'est peut-être l'ordre de prise de vue.

    2) Avec "mdls", on peut accéder à certaines données EXIF, comme la date de prise de vue d'une photo, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ mdls -name kMDItemContentCreationDate  FOO.JPG
    kMDItemContentCreationDate = 2015-06-06 14:09:28 +0000
    Après, on doit pouvoir écrire un tri des photos en utilisant cette donnée (laissé en exercice au lecteur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    height=$(mdls IMG_1331.JPG | grep PixelHeight | awk '{print $3}')
    lat=$(mdls IMG_1331.JPG | grep Latitude | awk '{print $3}')
    long=$(mdls IMG_1331.JPG | grep Longitude | awk '{print $3}')

  19. #19
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 550
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 550
    Points : 19 383
    Points
    19 383
    Par défaut
    le mot clé, c'est "censé".
    or, il y a probablement/occasionnellement une incohérence.

    donc, j'insiste, pour être sûr de l'ordre des deux listes, il vaut mieux le contrôler avec le même outil (sort) sur les mêmes données (les noms des fichiers) !
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  20. #20
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Ben, en théorie, je suis complètement d'accord avec toi, N_BaH, mais, en pratique...

    D'abord, si j'ai bien compris le mode opératoire utilisé:
    - L'utilisateur prend une photo #1 (la première de la journée) dont le nom en interne est géré par l'appareil photo lui-même.
    - L'utilisateur note, à côté, sur un support autre que l'appareil photo et indépendant de celui-ci, par exemple, une tablette, dans un fichier unique, que la photo #1 correspond à l'élève TOTO, en écrivant à la ligne #1 de ce fichier le nom de l'élève.
    puis
    - L'utilisateur prend une photo #2 (la 2ème prise de vue de la journée) dont le nom est géré par l'appareil photo lui-même.
    - L'utilisateur note que la photo #2 (qui arrive après la 1 dans l'ordre numérique et surtout dans l'ordre des prises de vue) correspond à l'élève TITI (qui arrive avant TOTO dans l'ordre alphabétique, mais ceci n'a aucune importance), en écrivant à la ligne #2 le nom de l'élève.
    etc.

    Ce mode opératoire a l'avantage d'être ultra-simple: pas de manipulation complexe pendant les prises de vue!

    En fait, si j'ai bien compris, c'est encore plus simple: le fichier est créé à l'avance et les photos sont prises dans l'ordre du fichier. Et si jamais le photographe ne suit pas exactement cet ordre, il corrige le fichier.

    Ensuite, il transfère les photos de l'appareil photo vers l'ordinateur.

    Rq: nous ne savons pas quel logiciel niroub utilise pour le transfert. Ce peut être "/Applications/Photos.app" (qui sait d'ailleurs faire de la reconnaissance de visage). Personnellement, j'ai l'habitude d'utiliser "Nikon Transfer". Mais on peut aussi utiliser le Finder pour copier directement le contenu du répertoire "DCIM" de la carte SD.

    Cette opération de transfert (sauf copie manuelle) renomme généralement les fichiers. Certains outils de transfert peuvent être configurés afin de pouvoir choisir le format de renommage.
    Comme je l'indiquais plus tôt, je crois qu'on peut choisir de repartir à 0 ou non.

    Ensuite, il voudrait pouvoir renommer les photos en faisant correspondre l'ordre des prises de vue avec l'ordre des élèves qui est stocké dans le fichier.

    Si l'on garde ce mode opératoire, il me paraît risqué de reposer sur le nom des fichiers des photos. Je crois qu'il vaudrait mieux trier les fichiers des photos en utilisant la propriété EXIF "kMDItemContentCreationDate" de la photo, comme indiqué dans mon post précédent.

    Maintenant, l'idéal serait que l'appareil photo soit comme un ordinateur, c'est-à-dire qu'il propose une interface permettant d'associer physiquement et de manière simple, la photo et le nom de l'élève!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/03/2017, 22h18
  2. Requete donnant une liste uniquement de résultats différents
    Par Ricardo_Tubbs dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/03/2006, 11h12
  3. Remplir 3 champs textes différents avec une liste déroulante
    Par azorol dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/12/2005, 00h04
  4. Même liste sur 26 pages différentes
    Par krfa1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/03/2005, 11h32
  5. Réponses: 6
    Dernier message: 28/02/2005, 12h10

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