bash-script Syntax in Verbindung mit dem Exiftool

  • In meinem kleinen Fotoworkflow nutze ich ein bash-Script u. a. mit dem Exiftool, um meine Bilder von der Quelle (SDKarte) ins Ziel (SSD) zu kopieren.

    Es sollen nur Bilder übertragen werden, die nach einem Datum X, z. B. nach dem 02.12.2022 erstellt wurden. Mit dieser Zeile klappt das einwandfrei:


    Code
    1. exiftool -o . '-Directory<DateTimeOriginal' -d $urpfad -P -r -progress:%20b -if '$datetimeoriginal# gt "2022:12:02"' $cardpfad


    Nun möchte ich aber kein festes Datum ("2022:12:02") setzen, sondern flexibel sein und mit einer Variable arbeiten.


    Code
    1. read -p "Anzahl der Tage eingeben, die vom heutigem Datum abgezogen werden: " minusDay
    2. pastDay=$(date -v-${minusDay}d +"%Y:%m:%d")
    3. echo $pastDay

    Leider geling es mir nicht, das feste Datum aus o. g. Zeile mit der Variablen $pastDay zu ersetzten...


    Vielleicht hat ja jemand da eine zündende Idee!

    iMacPro1,1: Fractal Define R6 - ASUS SAGE X299 - i9 10900X 3,7Ghz - 32 GB - Sapphire RX 5700 XT Pulse 8GB - NVMe SSD 960 EVO 1 TB - BCM943602CS Combo Karte - Sonnet Solo 10G AQC-107 - Titan Ridge TB3 - macOS 11.7 - OpenCore 084

    Proxmox: G5-Casemod - GA Z270-HD3P - i7 7700k 4,2Ghz - 16 GB - iGPU - GT 730 - NVMe SSD 1TB - VM1: Monterey - VM2: Windows 10 - VM3: Mannaro VM4: Unraid

    Mac Mini Studio: 32 GB - 512 GB SSD - CalDigit TS3 Plus Station - Terramaster D2 TB3 Raid

  • Du könntest dem das Datum auch per Parameter mitgeben:


    exiftool.sh

    Code
    1. exiftool -o . '-Directory<DateTimeOriginal' -d $urpfad -P -r -progress:%20b -if '$datetimeoriginal# gt "$1"' $cardpfad

    Rufst du dann so auf:

    Code
    1. bash exiftool.sh "2022:12:02"
  • Danke für den Hinweis...! Aber egal ob Parameter oder Variable es funktioniert nicht.


    Code
    1. '$datetimeoriginal# gt "2022:12:02"'
    2. '$datetimeoriginal# gt "$1"'
    3. '$datetimeoriginal# gt "$pastDay"'

    Wo ist der Unterschied...! Mir scheint es so, als ob die Variable/der Parameter nicht aufgelöst wird

    Bin aber mit der Syntax von bash nicht so vertraut. Hab auch schon diverse Varianten probiert, es will einfach nicht


    Sascha_77

    Wie maskiert man denn die doppelten Anführungszeichen in einem Bash-Script?


    Aus gt "$1" wird anscheinend gt 2022:12:02 anstatt gt "2022:1202"

    iMacPro1,1: Fractal Define R6 - ASUS SAGE X299 - i9 10900X 3,7Ghz - 32 GB - Sapphire RX 5700 XT Pulse 8GB - NVMe SSD 960 EVO 1 TB - BCM943602CS Combo Karte - Sonnet Solo 10G AQC-107 - Titan Ridge TB3 - macOS 11.7 - OpenCore 084

    Proxmox: G5-Casemod - GA Z270-HD3P - i7 7700k 4,2Ghz - 16 GB - iGPU - GT 730 - NVMe SSD 1TB - VM1: Monterey - VM2: Windows 10 - VM3: Mannaro VM4: Unraid

    Mac Mini Studio: 32 GB - 512 GB SSD - CalDigit TS3 Plus Station - Terramaster D2 TB3 Raid

    Einmal editiert, zuletzt von sunraid ()

  • Versuch mal so:


    Code
    1. '$datetimeoriginal# gt "'"$pastDay"'"'
  • Sascha_77

    Yes, du bist der Held meines heutigen Tages... So klappt es nun...
    [dafuer]

    iMacPro1,1: Fractal Define R6 - ASUS SAGE X299 - i9 10900X 3,7Ghz - 32 GB - Sapphire RX 5700 XT Pulse 8GB - NVMe SSD 960 EVO 1 TB - BCM943602CS Combo Karte - Sonnet Solo 10G AQC-107 - Titan Ridge TB3 - macOS 11.7 - OpenCore 084

    Proxmox: G5-Casemod - GA Z270-HD3P - i7 7700k 4,2Ghz - 16 GB - iGPU - GT 730 - NVMe SSD 1TB - VM1: Monterey - VM2: Windows 10 - VM3: Mannaro VM4: Unraid

    Mac Mini Studio: 32 GB - 512 GB SSD - CalDigit TS3 Plus Station - Terramaster D2 TB3 Raid