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.

#51 Le 06/08/2022, à 13:22

Watael

Re : obtenir que le chemin d'accès en srotie de grep

c'est ça.

tout va bien; ce n'est pas destiné à être lu tel quel par un humain.
on peut, mais c'est pénible. smile

surtout, si emacs te propose d'enregistrer, n'accepte pas. Là, on voit \00, alors que le caractère NULL est normalement un caractère invisible.

EDIT:
par contre, chez moi, emacs montre, sans vérification, la liste des fichiers séparés par un @...


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

Hors ligne

#52 Le 07/08/2022, à 22:11

visual1956

Re : obtenir que le chemin d'accès en srotie de grep

Bonsoir
depuis ce matin j’essaye de comprendre et utiliser la commande

$ IFS=' /' read emi deg dum min dum sec dum < <(exiv2 ... )

j’ai bien compris le principe de la ligne :
IFS est une variable interne au shell dans laquelle on stocke le séparateur  de champ
« read » va stocker  dans les différentes variables les données  issues de exiv2
pour débuter j’ai essayé avec un programme sur une image
voici les métadonnées d’une photos

michel@patricia-MS-7895:~$ exiv2 /home/michel/essai_exif/photos/heron-1.jpg
File name       : /home/michel/essai_exif/photos/heron-1.jpg
File size       : 3425338 Bytes
MIME type       : image/jpeg
Image size      : 4608 x 3456
Camera make     : NIKON
Camera model    : COOLPIX P900
Image timestamp : 2020:01:31 17:40:17
Image number    : 
Exposure time   : 1/400 s
Aperture        : F6.5
Exposure bias   : 0 EV
Flash           : No, compulsory
Flash bias      : 
Focal length    : 357.0 mm (35 mm equivalent: 2000.0 mm)
Subject distance: 
ISO speed       : 400
Exposure mode   : Auto
Metering mode   : Multi-segment
Macro mode      : 
Image quality   : FINE  
Exif Resolution : 4608 x 3456
White balance   : AUTO        
Thumbnail       : None

le script

#!/bin/bash

IFS= " :" read -r tt  < < (exiv2 -g 'Camera make'  -pv /home/michel/essai_exif/photos/heron-1.jpg) ; echo $tt

message d’erreur

michel@patricia-MS-7895:~$ /home/michel/essai_exif/programme/essai_tri.sh 
/home/michel/essai_exif/programme/essai_tri.sh: ligne 3: erreur de syntaxe près du symbole inattendu « < »
/home/michel/essai_exif/programme/essai_tri.sh: ligne 3: `IFS= " :" read -r tt  < < (exiv2 -g 'Camera make'  -pv /home/michel/essai_exif/photos/heron-1.jpg) ; echo $tt'
michel@patricia-MS-7895:~$ 

je n’arrive pas à trouver mon erreur qui d’après mon expériende demes erreur doit être évidente.
En espérant votre aide

Hors ligne

#53 Le 07/08/2022, à 23:12

Watael

Re : obtenir que le chemin d'accès en srotie de grep

nos images ne correspondent pas aux tiennes, il faut donc nous donner le retour de la commande que tu traites.

erreur 1 : pas d'espaces autour du = dans une assignation
erreur 2 : pas d'espaces entre < et (
par contre, il  en faut entre les deux <, parce que le premier est une redirection, et le second appartient à la syntaxe de la Substitution de processus.

et, n'oublie pas : « il faut toujours mettre les Développement de paramètres entre guillemets. TOUJOURS ! à moins de savoir pourquoi. » wink


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

Hors ligne

#54 Le 08/08/2022, à 00:33

visual1956

Re : obtenir que le chemin d'accès en srotie de grep

bonsoir ou bonne nuit
j'ai corrigé la première et seconde erreur

par contre peux tu m'expliciter "il faut toujours mettre les Développements de paramètres entre guillemets."

je débute et malgré mes recherches je ne comprends pas  la structure de la partie

<( exiv2................)

comme support j'ai inutilisé une  nouvelle photo dont les métadonnées commencent par Exif  . car je ne sais pas si l'emploi de exiv2 l'impose
voici  les métadonnées de la photo

michel@patricia-MS-7895:~$ exiv2  -pa /home/michel/essai_exif/photos/heron-1-1.JPG 
Exif.Image.ImageWidth                        Long        1  4608
Exif.Image.ImageLength                       Long        1  3456
Exif.Image.BitsPerSample                     Short       1  8
Exif.Image.Compression                       Short       1  Uncompressed
Exif.Image.PhotometricInterpretation         Short       1  RGB
Exif.Image.ImageDescription                  Ascii      11            
Exif.Image.Make                              Ascii       6  NIKON
Exif.Image.Model                             Ascii      13  COOLPIX P900
Exif.Image.Orientation                       Short       1  top, left
Exif.Image.SamplesPerPixel                   Short       1  3
Exif.Image.XResolution                       Rational    1  300
Exif.Image.YResolution                       Rational    1  300
Exif.Image.PlanarConfiguration               Short       1  1
Exif.Image.ResolutionUnit                    Short       1  inch
Exif.Image.Software                          Ascii      16  RawTherapee 5.6
Exif.Image.DateTime                          Ascii      20  2020:01:31 17:40:17
Exif.Image.ExifTag                           Long        1  302
Exif.Photo.ExposureTime                      Rational    1  1/400 s
Exif.Photo.FNumber                           Rational    1  F6.5
Exif.Photo.ExposureProgram                   Short       1  Auto
Exif.Photo.ISOSpeedRatings                   Short       1  400
Exif.Photo.ExifVersion                       Undefined   4  2.30
Exif.Photo.DateTimeOriginal                  Ascii      20  2020:01:31 17:40:17
Exif.Photo.DateTimeDigitized                 Ascii      20  2020:01:31 17:40:17
Exif.Photo.ExposureBiasValue                 SRational   1  0 EV
Exif.Photo.MaxApertureValue                  Rational    1  F2.7
Exif.Photo.MeteringMode                      Short       1  Multi-segment
Exif.Photo.LightSource                       Short       1  Unknown
Exif.Photo.Flash                             Short       1  No, compulsory
Exif.Photo.FocalLength                       Rational    1  357.0 mm
Exif.Photo.MakerNote                         Undefined 10810  (Binary value suppressed)
Exif.MakerNote.Offset                        Long        1  860
Exif.MakerNote.ByteOrder                     Ascii       3  II
Exif.Nikon3.Version                          Undefined   4  2.00
Exif.Nikon3.ISOSpeed                         Short       2  400
Exif.Nikon3.ColorMode                        Ascii       7  COLOR 
Exif.Nikon3.Quality                          Ascii       7  FINE  
Exif.Nikon3.WhiteBalance                     Ascii      13  AUTO        
Exif.Nikon3.Focus                            Ascii       7  Single autofocus
Exif.Nikon3.FlashSetting                     Ascii      13              
Exif.Nikon3.WhiteBalanceBias                 SShort      2  0 0
Exif.Nikon3.ISOSelection                     Ascii       7  AUTO  
Exif.Nikon3.DataDump                         Undefined 8892  (Binary value suppressed)
Exif.Nikon3.ExposureBracketComp              SRational   1  0/10
Exif.Nikon3.ImageProcessing                  Undefined  40  32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 0 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 32 0
Exif.NikonIi.ISO                             Byte        1  400
Exif.NikonIi.ISOExpansion                    Short       1  Off
Exif.NikonIi.ISO2                            Byte        1  400
Exif.NikonIi.ISOExpansion2                   Short       1  Off
Exif.Nikon3.DigitalZoom                      Rational    1  1.0x
Exif.NikonAf.AFAreaMode                      Byte        1  Single Area
Exif.NikonAf.AFPoint                         Byte        1  Center
Exif.NikonAf.AFPointsInFocus                 Short       1  Center
Exif.Nikon3.SceneMode                        Ascii      16  BIRD-WATCHING  
Exif.Nikon3.ShotInfo                         Undefined 1479  (Binary value suppressed)
Exif.Nikon3.NoiseReduction                   Ascii       5  OFF 
Exif.Nikon3.ImageStabilization               Ascii      11  VR-ACTIVE 
Exif.NikonMe.Version                         Undefined   4  1.00
Exif.NikonMe.MultiExposureMode               Long        1  Off
Exif.NikonMe.MultiExposureShots              Long        1  0
Exif.NikonMe.MultiExposureAutoGain           Long        1  Off
Exif.Nikon3.HighISONoiseReduction            Short       1  Normal
Exif.Photo.UserComment                       Undefined 128                                                                                                                         
Exif.Photo.FileSource                        Undefined   1  Digital still camera
Exif.Photo.SceneType                         Undefined   1  Directly photographed
Exif.Photo.CustomRendered                    Short       1  Normal process
Exif.Photo.ExposureMode                      Short       1  Auto
Exif.Photo.WhiteBalance                      Short       1  Auto
Exif.Photo.DigitalZoomRatio                  Rational    1  0.0
Exif.Photo.FocalLengthIn35mmFilm             Short       1  2000.0 mm
Exif.Photo.SceneCaptureType                  Short       1  Standard
Exif.Photo.GainControl                       Short       1  None
Exif.Photo.Contrast                          Short       1  Normal
Exif.Photo.Saturation                        Short       1  Normal
Exif.Photo.Sharpness                         Short       1  Normal
Exif.Photo.SubjectDistanceRange              Short       1  Unknown
michel@patricia-MS-7895:~$ 

                                                                                                       

mon nouveau code

#!/bin/bash


IFS=" :" read  tt \ < <(exiv2 -g Exif.Image.Model /home/michel/essai_exif/photos/heron-1-1.JPG) ; echo "$tt"

où mettre les "" ?

le message d'erreur

michel@patricia-MS-7895:~$ /home/michel/essai_exif/programme/essai_tri.sh 
/home/michel/essai_exif/programme/essai_tri.sh: ligne 4 : read: «   » : identifiant non valable
Exif.Image.Model
michel@patricia-MS-7895:~$ 

Hors ligne

#55 Le 08/08/2022, à 03:22

Watael

Re : obtenir que le chemin d'accès en srotie de grep

c'est le retour de cette commande dont nous avons besoin !

exiv2 -g Exif.Image.Model /home/michel/essai_exif/photos/heron-1-1.JPG

puisque c'est ça qu'on va traiter.

les guillemets, tu les as mis autour de $tt, c'est bon.

c'est quoi ce backslash (\) ?!

si tu n'indiques qu'un seul nom de variable à read, malgré l'IFS, tout ira dans cette seule variable.

le <(...) est une Substitution de processus (cf. cette expression dans le man bash); en gros, ça évite de faire un pipe.


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

Hors ligne

#56 Le 08/08/2022, à 10:15

visual1956

Re : obtenir que le chemin d'accès en srotie de grep

merci pour cette réponse très matinale
je connaissais pas cette notion de substitution de processus je vais l’approfondir via  le site
guide avance script
j'ai retiré le backslash qui n'avait aucune raison
maintenant  la commande fonctionne bien
voici son retour

michel@patricia-MS-7895:~$ /home/michel/essai_exif/programme/essai_tri.sh 
Exif.Image.Model                             Ascii      13  COOLPIX P900
michel@patricia-MS-7895:~$ 

je vais donc poursuivre le développement de mon script
encore merci et à bientôt pour une nouvelle question smile

Hors ligne

#57 Le 16/08/2022, à 16:46

visual1956

Re : obtenir que le chemin d'accès en srotie de grep

bonjour
je continue toujours à travailler sur mon script en essayant de comprendre certaines commandes proposées
'jai un problème avec celle ci qui dit permettre de lire un fichier contenant des chemin à des photos

xargs -I {} -0 -a /media/patricia/Michel5/Photos/essai_exif/liste.txt

si je comprends les termes individuellement je n'arrive pas à comprendre comment l'insérer dans une suite de commande

Peux tu me donner un exemple
Par avance merci

Hors ligne

#58 Le 16/08/2022, à 20:35

Watael

Re : obtenir que le chemin d'accès en srotie de grep

ça se met à la fin du script pour afficher le contenu du fichier vers lequel a été redirigé la sortie de find.

mais, comme dit dans le message, ce n'est pas forcément obligatoire. smile

Dernière modification par Watael (Le 16/08/2022, à 23:19)


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

Hors ligne

#59 Le 16/08/2022, à 23:36

visual1956

Re : obtenir que le chemin d'accès en srotie de grep

j'ai toujours une incompréhension
voici deux ligne de code
la premièere avec "{}" la seconde sans
comme tu peux le constater la commande xargs  lit bien le contenu du fichier lorsque "{}" est absent
peux tu m'éclairer ?
par avance merci


patricia@patricia-MS-7895:~$ xargs  -a /home/patricia/Documents/essai/essai
dlkvhdkjh hjlrdhjgo io lkkfldkj obnfoih fiio
patricia@patricia-MS-7895:~$ xargs -I {} -a /home/patricia/Documents/essai/essai

patricia@patricia-MS-7895:~$ 

Hors ligne

#60 Le 16/08/2022, à 23:55

Watael

Re : obtenir que le chemin d'accès en srotie de grep

j'ai dû oublier un echo {}, et c'est indispensable, ainsi que -0 pour lire le fichier dont les enregistrements sont séparés par des caractères NULL.

mais, comme dit dans le message, selon la façon dont ont traite les données, ce n'est pas forcément indispensable. big_smile


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

Hors ligne

#61 Le 17/08/2022, à 07:42

visual1956

Re : obtenir que le chemin d'accès en srotie de grep

As tu un ouvrage (eb français) à me conseiller pour  structurer mon apprentissage

Hors ligne

#62 Le 17/08/2022, à 13:09

Watael

Re : obtenir que le chemin d'accès en srotie de grep

l'ABS* existe en français.

--
* Advanced Bash Scripting

Dernière modification par Watael (Le 17/08/2022, à 13:09)


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

Hors ligne