Bash-Programmierung

ChrisF1977

Aktives Mitglied
Thread Starter
Dabei seit
30.12.2006
Beiträge
203
Reaktionspunkte
11
Hallo,

ich benötige Hilfe bei der Programmierung eines BASH-Scriptes. Das konnte ich früher unter Linux einmal, das ist mir alles aber im Laufe der Jahre entfallen.

Die Situation ist folgende:

In einem Verzeichniss sind Anzahl X Dateien mit der Dateiendung .arw (Sony RAW Dateien). Jede Datei hat unterschiedliche Lens-Tags, das sieht dann z.b. so aus:

Code:
Christians-Mac-Pro:exif_test chris$ exiftool _DSC1666.ARW | grep Lens
Lens Type                       : Tamron or Sigma Lens (128)
Lens Spec                       : Unknown (00 0 0 0 0 00)
Lens Mount                      : A-mount
Lens Format                     : Full-frame
Lens Spec Features              : 
Lens Info                       : 0mm f/0
Lens Model                      : ----
Lens ID                         : Sigma 18-250mm F3.5-6.3 DC OS HSM or Tamron AF 28-105mm F4-5.6 [IF] or Sigma 24-105mm F4 DG HSM | A or Sigma 18-300mm F3.5-6.3 DC Macro HSM | C
Christians-Mac-Pro:exif_test chris$ exiftool _DSC3099.ARW | grep Lens
Lens Type                       : Minolta AF 100-300mm F4.5-5.6 APO (D) or Sigma Lens
Lens Spec                       : Unknown (00 0 0 0 0 00)
Lens Mount                      : A-mount
Lens Format                     : Full-frame
Lens Spec Features              : 
Lens Info                       : 100-300mm f/4.5-5.6
Lens Model                      : 100-300mm F4.5-5.6
Lens ID                         : Sigma 24mm F1.8 EX DG ASP Macro
Christians-Mac-Pro:exif_test chris$ exiftool _DSC3101.ARW | grep Lens
Lens Type                       : Minolta AF 28-75mm F2.8 (D)
Lens Spec                       : Unknown (00 0 0 0 0 00)
Lens Mount                      : A-mount
Lens Format                     : Full-frame
Lens Spec Features              : 
Lens Info                       : 28-75mm f/2.8
Lens Model                      : 28-75mm F2.8
Lens ID                         : Minolta AF 28-75mm F2.8 (D)
Christians-Mac-Pro:exif_test chris$

Jetzt möchte ich mittels BASH-Script und exiftool die Tags einer jeden Datei prüfen und folgendes ausführen:

wenn Lensid = Minolta AF 28-75mm F2.8 (D) dann exiftool -lensmodel="Minolta AF 28-75mm F2.8 (D)" *.ARW
wenn lensid = Sigma 24mm F1.8 EX DG ASP Macro dann exiftool -lensmodel="Sigma 24mm F1.8 EX DG ASP Macro" -lensinfo="Sigma 24mm F1.8 EX DG ASP Macro" *.ARW
wenn lensmodel= ---- dann exiftool -lensid="Tamron SP AF 17-35mm F2.8-4 Di LD Aspherical IF" -lensmodel="Tamron SP AF 17-35mm F2.8-4 Di LD Aspherical IF" -lensinfo="17-35mm f/2.8-4.0" *.ARW
wenn nichtsdergleichen dann nächste Datei auslesen

Vielen Dank!
Gruß
Christian
 
exiftool kann auch tags kopieren, also hier z.b. von lensid nach lensmodel.
Code:
for myfile in *.ARW
 do
  exiftool -lensid "${myfile}" | grep 'Minolta AF 28-75mm F2.8 (D)' && exiftool '-lensmodel<lensid' "${myfile}"
  exiftool ...
 done
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: ruerueka, Madcat, zagdul und eine weitere Person
@Olivetti Wenn der Grep nichts trifft, wird der dritte Teil (&&) nicht ausgeführt?
 
Cool, ich hätte hier mit if geprüft.... Da muss ich mir doch mal wirklich Zeit für die Bash nehmen.
 
Sorry für die späte Rückmeldung. Konnte das erst jetzt ausprobieren.
Das ganze funktioniert, vielen Dank! :)

Code:
#!/bin/sh

for myfile in *.ARW
 do
  exiftool -lensid "${myfile}" | grep 'Sigma 24mm F1.8 EX DG ASP Macro' && exiftool -m -overwrite_original_in_place -P -LensType='Sigma 24mm F1.8 EX DG ASP Macro' -LensInfo='Sigma 24mm F1.8 EX DG ASP Macro' -LensModel='Sigma 24mm F1.8 EX DG ASP Macro' -FocalLength='24' -MaxApertureValue='1.8' "${myfile}"
  exiftool -lensid "${myfile}" | grep 'Sigma 50mm F1.4 EX DG HSM' && exiftool -m -overwrite_original_in_place -P -LensType='Sigma 50mm F1.4 EX DG HSM' -LensInfo='Sigma 50mm F1.4 EX DG HSM' -LensModel='Sigma 50mm F1.4 EX DG HSM' -FocalLength='50' -MaxApertureValue='1.4' "${myfile}"
 done
 
Zurück
Oben Unten