[Shell] Trier contenu d'un fichier - Commande sort

Résolu/Fermé
Nemesis31 Messages postés 436 Date d'inscription vendredi 22 août 2008 Statut Membre Dernière intervention 3 avril 2014 - Modifié par Nemesis31 le 27/12/2012 à 13:00
 Max - 4 déc. 2014 à 17:03
Bonjour,

je dois créer un script qui permet d'afficher la liste des photos dans l'ordre chronologique de prise de vue.

Afficher la liste des photos avec la date de prise de vue, j'ai pu le faire, comme vous pouvez le constater dans le fichier temp.txt
Arbres.JPG 2012:11:03 15:17:17  
Fosse.JPG 2011:11:03 15:26:05  
Fort_Foch.JPG 2012:11:02 11:46:08  
Les Mam'zelles.JPG 2012:11:03 16:05:14  
Vue_du_donjon.JPG 2012:11:03 15:19:48  
Plan_3D.JPG 2012:11:03 15:16:20  
Transilien.JPG 2012:10:29 18:02:20  
Souvenirs.JPG 2012:11:03 16:02:27


Pour avoir la date de prise de vue, si vous êtes sous Linux (et si vous voulez vous amusez avec vos fichiers ^^) il faudra au préalable télécharger le programme exiv2 (https://www.exiv2.org/download.html (il fonctionne aussi sous Windows, mais je doute que les commandes shell fonctionne ^^)


Il faut donc trier d'abord, en fonction de l'année, puis du mois, puis du jour, puis de l'heure, puis des minutes et enfin en fonction des secondes :)
Donc, je devrais obtenir quelque chose comme ceci:

Fosse.JPG 2011:11:03 15:26:05  
Transilien.JPG 2012:10:29 18:02:20  
Fort_Foch.JPG 2012:11:02 11:46:08  
Plan_3D.JPG 2012:11:03 15:16:20  
Arbres.JPG 2012:11:03 15:17:17  
Vue_du_donjon.JPG 2012:11:03 15:19:48  
Souvenirs.JPG 2012:11:03 16:02:27  
Les Mam'zelles.JPG 2012:11:03 16:05:14



Sauf que je n'obtiens pas du tout ça avec la commande sort !!

J'obtiens ceci (exemple):
$ sort -n temp.txt -t : -k2n,2n -k3n,3n  

Transilien.JPG 2012:10:29 18:02:20  
Fort_Foch.JPG 2012:11:02 11:46:08  
Arbres.JPG 2012:11:03 15:17:17  
Fosse.JPG 2011:11:03 15:26:05  
Plan_3D.JPG 2012:11:03 15:16:20  
Vue_du_donjon.JPG 2012:11:03 15:19:48  
Les Mam'zelles.JPG 2012:11:03 16:05:14  
Souvenirs.JPG 2012:11:03 16:02:27  


A mon avis, je n'ai pas su utilisé la commande sort. Et il me semble que c'est la seule commande shell qui permette de trier....

Si quelqu'un passe par ici :)

Merci pour vos prochaines réponses !

A voir également:

3 réponses

Bonjour,

Il y a un problème dans ton fichier en entrée.
La commande sort doit être en mesure déterminer les différents champs.
Ici, le caractère espace " " est un séparateur, mais est aussi contenu dans un nom de fichier (Les Mam'zelles).
Il faudra absolument changer celà, sinon la commande sort ne s'y retrouvera jamais...
J'occulte ce problème dans mon exemple : je remplace cet espace par un '_'.

Ensuite, tu spécifies l'utilisation du caractères séparateur ":".
Dans ce cas, le fichier contiendra 5 champs, et trier sur les champs 2 et 3 n'aura pas de sens.
Pas besoin de spécifier de séparateur, l'espace (par défaut) conviendra très bien, car il suffit de trier les chaînes complètes, sans séparer année/mois/jour et heure/minutes/secondes.

Ca fonctionne tout simplement comme ça :

$> cat test
Arbres.JPG 2012:11:03 15:17:17
Fosse.JPG 2011:11:03 15:26:05
Fort_Foch.JPG 2012:11:02 11:46:08
Les_Mam'zelles.JPG 2012:11:03 16:05:14
Vue_du_donjon.JPG 2012:11:03 15:19:48
Plan_3D.JPG 2012:11:03 15:16:20
Transilien.JPG 2012:10:29 18:02:20
Souvenirs.JPG 2012:11:03 16:02:27
$> sort -k2,3 test
Fosse.JPG 2011:11:03 15:26:05
Transilien.JPG 2012:10:29 18:02:20
Fort_Foch.JPG 2012:11:02 11:46:08
Plan_3D.JPG 2012:11:03 15:16:20
Arbres.JPG 2012:11:03 15:17:17
Vue_du_donjon.JPG 2012:11:03 15:19:48
Souvenirs.JPG 2012:11:03 16:02:27
Les_Mam'zelles.JPG 2012:11:03 16:05:14
1
Nemesis31 Messages postés 436 Date d'inscription vendredi 22 août 2008 Statut Membre Dernière intervention 3 avril 2014 78
28 déc. 2012 à 16:33
Merci de ta réponse swed.

Je me doutais bien qu'il y aurait un problème avec les espaces.

Mais ce n'est pas moi qui décide des noms de fichiers : c'est la personne qui a fait le sujet du projet, et nous (=étudiants) nous devons d'utiliser nos scripts sur leurs fichiers photos.

Cependant, ce n'est pas vraiment spécifier si oui ou non non a le droit de rajouter des _ aux noms de fichiers...

Si tu veux voir le sujet du projet : www.pouick.fr/downloads/mini_projet_2012.pdf

Je vais essayer avec l'underscore:) Encore merci !!
0
Nemesis31 Messages postés 436 Date d'inscription vendredi 22 août 2008 Statut Membre Dernière intervention 3 avril 2014 78
29 déc. 2012 à 18:40
Bonsoir,

je viens de faire plusieurs tests, et ça fonctionne !!

Encore merci swed ! ;)
0
Bonjour, moi aussi j'ai ce projet à faire, j'aimerai savoir comment tu t'y ai pris pour résoudre ton problème.
Je galère pas mal en shell, et une petite aide serai la bienvenue.

Merci de ta future réponse :)
0