#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.
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. »
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
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.
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.
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