{"id":632,"date":"2012-12-26T13:55:16","date_gmt":"2012-12-26T13:55:16","guid":{"rendered":"http:\/\/www.budus.it\/Blog\/?p=632"},"modified":"2017-06-18T07:34:58","modified_gmt":"2017-06-18T07:34:58","slug":"cambiare-data-alle-foto-con-imac","status":"publish","type":"post","link":"https:\/\/www.budus.it\/Blog\/cambiare-data-alle-foto-con-imac\/","title":{"rendered":"Cambiare data alle foto con iMac"},"content":{"rendered":"<p>Ho gi\u00e0 creato il <a title=\"Cambiare data alle Foto da Linux\" href=\"https:\/\/www.budus.it\/Blog\/?p=627\">medesimo articolo<\/a> dedicato a Linux ma, essendo lo script che esegue l&#8217;operazione, piuttosto diverso nella versione iMac ho, per praticit\u00e0, preferito crearlo ex-novo.<\/p>\n<p>Il problema:\u00a0<strong>cambiare la data ad un insieme di foto (ma, volendo, a qualsiasi file) con uno strumento sufficientemente potente, che mi consenta di stabilire se eseguire addizioni\/sottrazioni alle date, piuttosto che impostare la data odierna o comunque una forzata.<\/strong><\/p>\n<p><!--more--><\/p>\n<p>So che, per iMac, esistono soluzioni a pagamento su AppStore che eseguono l&#8217;operazione ma: perch\u00e9 pagare per un&#8217;applicazione che sono capace di crearmi anche da solo ?<\/p>\n<p>Mi rendo conto che, per gli utenti iMac, la soluzione proposta sia decisamente meno fruibile che non per quelli Linux, dal momento che sono meno avvezzi all&#8217;uso del terminale, tuttavia, mi permetto di proporla ugualmente per chi vuole comunque &#8211; e in tempi rapidi ed economici &#8211; una soluzione al problema di cui sopra, che si presenta piuttosto puntualmente nel momento in cui si vanno ad importare fotografie da una fotocamera digitale. La data sballata, soprattutto nel momento in cui si esegue l&#8217;importazione in iPhoto, \u00e8 un problema fastidioso che va risolto prima, perch\u00e9 con quest&#8217;ultima applicazione non \u00e8 altrettanto pratico ed efficace.<\/p>\n<p>Come prima cosa dobbiamo creare lo script bash (sostanzialmente un programma interpretato run-time dal sistema Mac OS X) che esegue l&#8217;operazione; i passaggi sono i seguenti:<\/p>\n<ol>\n<li>Si apre un Terminale; dal Finder si va in\u00a0<strong>Applicazioni -&gt; Utility -&gt; Terminale<\/strong><\/li>\n<li>Si devono ottenere i privilegi di amministratore (in questo modo \u00e8 possibile salvare lo script in una cartella di sistema, accessibile da qualsiasi utente); per farlo si digita il comando:\n<pre>sudo bash<\/pre>\n<p>e si preme INVIO per eseguirlo (da ora in poi, premere sempre INVIO quando suggerisco l&#8217;esecuzione di un comando a terminale). Affinch\u00e9 il comando possa essere eseguito \u00e8 necessario introdurre la password che si utilizza per fare login con l&#8217;utente attuale.<\/li>\n<li>Si rende corrente la cartella dove andremo a collocare lo script con il comando:\n<pre>cd \/usr\/local\/bin<\/pre>\n<p>e si apre la creazione dello script con questi 2 comandi:<\/p>\n<pre>vi uda_change_time\r\ni<\/pre>\n<\/li>\n<li>A questo punto bisogna fare un copia\/incolla del seguente codice:\n<pre>#!\/bin\/bash\r\n\r\n# Script per cambiare la data ai files specificati.\r\n\r\n# Versione iMac 2012.12.26.a\r\n# By UDA'Software 2012\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\nfunction print_help() {\r\n    printf 'Sintassi: %s [--help] &lt;ora&gt; &lt;minuti&gt; &lt;secondi&gt; &lt;giorni&gt; &lt;mesi&gt; &lt;anni&gt; [OPTIONS]\\n' \"${0}\"\r\n\r\n    cat&lt;&lt;EOF\r\n\r\nScopo dello script e' quello di modificare la data e l'ora dei files\r\nspecificati,aggiungendo o sottraendo \"tempo\".\r\n\r\nIl \"tempo\" viene specificato con 6 parametri, che possono essere\r\npositivi o negativi - aggiungendo il segno \"-\" (meno) -, rappresentati\r\nl'entit\u00e0 che si vuole andare, rispettivamente, ad aggiungere o\r\ntogliere alla data corrente dei files che verranno elaborati.\r\n\r\nAd esempio:\r\n\r\n${0} 5 -30 20 4 -3 10 miafoto.jpg\r\n\r\nproduce come effetto che alla data di creazione del file \"miafoto.jpg\"\r\nsaranno aggiunte 5 ore, sottratti 30 minuti, aggiunti 20 secondi,\r\naggiunti 4 giorni, sottratti 3 mesi e aggiunti 10 anni.\r\n\r\nVolendo elaborare piu' files contemporaneamente e' possibile\r\nutilizzare i caratteri jolly; ad esempio:\r\n\r\n${0} 5 -30 20 4 -3 10 '*.jpg'\r\n\r\nOPZIONI\r\n\r\nE' possibile utilizzare delle opzioni che modificano il comportamento\r\nbase dello script, ovvero:\r\n\r\n    --test\r\n        Modalita' di simulazione; non esegue nessuna modifica,\r\n        aiuta solo a capire come la data dei files specificati\r\n        verra' modificata.\r\n\r\n    --ask\r\n        Modalita' di richiesta; prima di procedere alla\r\n        modifica dei files specificati, chiede conferma. Con\r\n        la risposta \"a\" si ottiene l'interruzione definitiva.\r\n\r\n    --current\r\n        Ignora i parametri - relativi al tempo di modifica - e\r\n        utilizza la data corrente per stabilire quella che\r\n        dovranno assumere i files specificati.\r\n\r\n    --force\r\n        Anziche' utilizzare i parametri come modificatori della\r\n        data corrente dei files da elaborare, vengono\r\n        utilizzati per stabilirla esattamente; questo determina\r\n        che il parametro \"anni\", anziche' essere trattato come\r\n        la quantita' di anni da aggiungere o sottrarre, deve\r\n        essere a 4 cifre e rappresentare direttamente l'anno\r\n        che si intende configurare.\r\n\r\nEOF\r\n    exit 0;\r\n}\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\nfunction calcola_max_giorni() {\r\n    case ${file_mese} in\r\n        1) # Gennaio\r\n            max_giorni=31\r\n            ;;\r\n        2) # Febbraio\r\n            if (( (anno % 400) == 0 )) || (( (anno % 4) == 0 &amp;&amp; (anno % 100) != 0 )); then\r\n                max_giorni=29\r\n            else\r\n                max_giorni=28\r\n            fi\r\n            ;;\r\n        3) # Marzo\r\n            max_giorni=31\r\n            ;;\r\n        4) # Aprile\r\n            max_giorni=30\r\n            ;;\r\n        5) # Maggio\r\n            max_giorni=31\r\n            ;;\r\n        6) # Giugno\r\n            max_giorni=30\r\n            ;;\r\n        7) # Luglio\r\n            max_giorni=31\r\n            ;;\r\n        8) # Agosto\r\n            max_giorni=31\r\n            ;;\r\n        9) # Settembre\r\n            max_giorni=30\r\n            ;;\r\n        10) # Ottobre\r\n            max_giorni=31\r\n            ;;\r\n        11) # Novembre\r\n            max_giorni=30\r\n            ;;\r\n        12) # Dicembre\r\n            max_giorni=31\r\n            ;;\r\n    esac\r\n}\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\nora=\"${1:-0}\"\r\nminuti=\"${2:-0}\"\r\nsecondi=\"${3:-0}\"\r\ngiorno=\"${4:-0}\"\r\nmese=\"${5:-0}\"\r\nanno=\"${6:-0}\"\r\nfiles=\"${7}\"\r\n\r\nif [ \"${1}\" == \"--help\" ]; then\r\n    print_help\r\nfi\r\n\r\nif [ \"${files}\" == \"\" ]; then\r\n    printf 'ERRORE: Non hai specificato i paramatri correttamente.\\nUsare: %s --help\\n' \"${0}\"\r\n\r\n    exit 1;\r\nfi\r\n\r\nwhile [ \"$8\" != \"\" ]; do\r\n    case ${8} in\r\n        \"--test\")\r\n            flag_test=1\r\n            printf '(Attivata la modalita simulazione)\\n'\r\n            ;;\r\n        \"--ask\")\r\n            flag_ask=1\r\n            printf '(Attivata la modalita richiesta di modifica)\\n'\r\n            ;;\r\n        \"--current\")\r\n            flag_current=1\r\n            printf '(Attivata la modalita data corrente)\\n'\r\n            ;;\r\n        \"--force\")\r\n            flag_force=1\r\n            if [ ${ora} -lt 0 ] || [ ${ora} -gt 23 ]; then\r\n                printf 'ERRORE: Hai specificato una data non valida; l ora non deve essere inferiore a 0 e superiore a 23.\\n'\r\n                exit 1;\r\n            fi\r\n            if [ ${minuti} -lt 0 ] || [ ${minuti} -gt 59 ]; then\r\n                printf 'ERRORE: Hai specificato una data non valida; i minuti non devono essere inferiori a 0 e superiori a 59.\\n'\r\n                exit 1;\r\n            fi\r\n            if [ ${secondi} -lt 0 ] || [ ${secondi} -gt 59 ]; then\r\n                printf 'ERRORE: Hai specificato una data non valida; i secondi non devono essere inferiori a 0 e superiori a 59.\\n'\r\n                exit 1;\r\n            fi\r\n            if [ ${mese} -lt 1 ] || [ ${mese} -gt 12 ]; then\r\n                printf 'ERRORE: Hai specificato una data non valida; i mesi non devono essere inferiori a 1 e superiori a 12.\\n'\r\n                exit 1;\r\n            fi\r\n            if [ ${anno} -lt 1970 ] || [ ${anno} -gt 9999 ]; then\r\n                printf 'ERRORE: Hai specificato una data non valida; l anno non deve essere inferiore al 1970.\\n'\r\n                exit 1;\r\n            fi\r\n\r\n            file_mese=${mese}\r\n            calcola_max_giorni\r\n\r\n            if [ ${giorno} -lt 1 ] || [ ${giorno} -gt ${max_giorni} ]; then\r\n                printf 'ERRORE: Hai specificato una data non valida; i giorni non devono essere inferiori a 1 e superiori a %d.\\n' ${max_giorni}\r\n                exit 1;\r\n            fi\r\n            printf '(Attivata la modalita data forzata [%02d:%02d:%02d %02d\/%02d\/%02d])\\n' ${ora} ${minuti} ${secondi} ${giorno} ${mese} ${anno}\r\n            ;;\r\n    esac\r\n\r\n    shift\r\ndone\r\n\r\n################################################################################\r\n#_______________________________________________________________________________\r\nif [ ${flag_current:-0} == 0 ] &amp;&amp; [ ${flag_force:-0} == 0 ]; then\r\n    if [ ${ora} -lt 0 ]; then\r\n        printf '* All orario saranno sottratte %d ore\\n' ${ora\/-\/}\r\n    else\r\n        printf '* All orario saranno aggiunte %d ore\\n' ${ora\/-\/}\r\n    fi\r\n\r\n    if [ ${minuti} -lt 0 ]; then\r\n        printf '* All orario saranno sottratte %d minuti\\n' ${minuti\/-\/}\r\n    else\r\n        printf '* All orario saranno aggiunte %d minuti\\n' ${minuti\/-\/}\r\n    fi\r\n\r\n    if [ ${secondi} -lt 0 ]; then\r\n        printf '* All orario saranno sottratte %d secondi\\n' ${secondi\/-\/}\r\n    else\r\n        printf '* All orario saranno aggiunte %d secondi\\n' ${secondi\/-\/}\r\n    fi\r\n\r\n    if [ ${giorno} -lt 0 ]; then\r\n        printf '* Alla data saranno sottratti %d giorni\\n' ${giorno\/-\/}\r\n    else\r\n        printf '* Alla data saranno aggiunti %d giorni\\n' ${giorno\/-\/}\r\n    fi\r\n\r\n    if [ ${mese} -lt 0 ]; then\r\n        printf '* Alla data saranno sottratti %d mesi\\n' ${mese\/-\/}\r\n    else\r\n        printf '* Alla data saranno aggiunti %d mesi\\n' ${mese\/-\/}\r\n    fi\r\n\r\n    if [ ${anno} -lt 0 ]; then\r\n        printf '* Alla data saranno sottratti %d anni\\n' ${anno\/-\/}\r\n    else\r\n        printf '* Alla data saranno aggiunti %d anni\\n' ${anno\/-\/}\r\n    fi\r\nfi\r\n\r\nfor file in ${files}; do\r\n    if [ -f ${file} ]; then\r\n        printf 'Elaborazione del file: %s\\n' \"${file}\"\r\n\r\n        file_timestamp=$(stat -f %m ${file})\r\n\r\n        file_ora=$(date -r ${file_timestamp} +%H | sed 's@^0@@')\r\n        file_minuti=$(date -r ${file_timestamp} +%M | sed 's@^0@@')\r\n        file_secondi=$(date -r ${file_timestamp} +%S | sed 's@^0@@')\r\n        file_giorno=$(date -r ${file_timestamp} +%d | sed 's@^0@@')\r\n        file_mese=$(date -r ${file_timestamp} +%m | sed 's@^0@@')\r\n        file_anno=$(date -r ${file_timestamp} +%Y | sed 's@^0@@')\r\n\r\n        printf '  Data corrente   : %02d:%02d:%02d %02d\/%02d\/%04d\\n' ${file_ora} ${file_minuti} ${file_secondi} ${file_giorno} ${file_mese} ${file_anno}\r\n\r\n        if [ ${flag_current:-0} == 0 ]; then\r\n            if [ ${flag_force:-0} == 0 ]; then\r\n                delta_timestamp=$(($((${ora} * 3600)) + $((${minuti} * 60)) + ${secondi}))\r\n                file_timestamp=$((${file_timestamp} + ${delta_timestamp}))\r\n\r\n                file_ora=$(date -r ${file_timestamp} +%H | sed 's@^0@@')\r\n                file_minuti=$(date -r ${file_timestamp} +%M | sed 's@^0@@')\r\n                file_secondi=$(date -r ${file_timestamp} +%S | sed 's@^0@@')\r\n\r\n                file_anno=$(($(date -r ${file_timestamp} +%Y | sed 's@^0@@') + ${anno}))\r\n                file_mese=$(($(date -r ${file_timestamp} +%m | sed 's@^0@@') + ${mese}))\r\n                if [ ${file_mese} -gt 12 ]; then\r\n                    file_mese=1\r\n                    file_anno=$((${file_anno} + 1))\r\n                elif [ ${file_mese} -lt 1 ]; then\r\n                    file_mese=12\r\n                    file_anno=$((${file_anno} - 1))\r\n                fi\r\n\r\n                calcola_max_giorni\r\n\r\n                file_giorno=$(($(date -r ${file_timestamp} +%d | sed 's@^0@@') + ${giorno}))\r\n                if [ ${file_giorno} -gt ${max_giorni} ]; then\r\n                    file_giorno=1\r\n                    file_mese=$((${file_mese} + 1))\r\n\r\n                    if [ ${file_mese} -gt 12 ]; then\r\n                        file_mese=1\r\n                        file_anno=$((${file_anno} + 1))\r\n                    fi\r\n                elif [ ${file_giorno} -lt 1 ]; then\r\n                    file_mese=$((${file_mese} - 1))\r\n                    if [ ${file_mese} -lt 1 ]; then\r\n                        file_mese=12\r\n                        file_anno=$((${file_anno} - 1))\r\n                    fi\r\n\r\n                    calcola_max_giorni\r\n\r\n                    file_giorno=${max_giorni}\r\n                fi\r\n            else\r\n                file_ora=$(echo \"${ora}\" | grep -o '[0-9]*' | sed 's@^00@0@g')\r\n                file_minuti=$(echo \"${minuti}\" | grep -o '[0-9]*' | sed 's@^00@0@g')\r\n                file_secondi=$(echo \"${secondi}\" | grep -o '[0-9]*' | sed 's@^00@0@g')\r\n                file_giorno=$(echo \"${giorno}\" | grep -o '[0-9]*' | sed 's@^00@0@g')\r\n                file_mese=$(echo \"${mese}\" | grep -o '[0-9]*' | sed 's@^00@0@g')\r\n                file_anno=$(echo \"${anno}\" | grep -o '[0-9]*' | sed 's@^00@0@g')\r\n            fi\r\n        else\r\n            file_ora=$(date +%H)\r\n            file_minuti=$(date +%M)\r\n            file_secondi=$(date +%S)\r\n            file_giorno=$(date +%d)\r\n            file_mese=$(date +%m)\r\n            file_anno=$(date +%Y)\r\n        fi\r\n\r\n        if [ ${flag_test:-0} == 0 ]; then\r\n            if [ ${flag_ask:-0} == 0 ]; then\r\n                answer=\"S\"\r\n            else\r\n                printf '  Data prevista   : %02d:%02d:%02d %02d\/%02d\/%04d\\n' ${file_ora} ${file_minuti} ${file_secondi} ${file_giorno} ${file_mese} ${file_anno}\r\n                printf 'Vuoi modificare la data del file  %s  ? (S\/n\/a)\\n'\r\n                read answer\r\n\r\n                if [ \"${answer}\" == \"a\" ] || [ \"${answer}\" == \"A\" ]; then\r\n                    printf '\\nABORTITO !\\n'\r\n\r\n                    exit 0;\r\n                fi\r\n            fi\r\n\r\n            if [ \"${answer}\" != \"n\" ] &amp;&amp; [ \"${answer}\" != \"N\" ]; then\r\n                printf '  Data modificata : %02d:%02d:%02d %02d\/%02d\/%04d\\n' ${file_ora} ${file_minuti} ${file_secondi} ${file_giorno} ${file_mese} ${file_anno}\r\n\r\n                file_ora=$(printf '%02d\\n' ${file_ora})\r\n                file_minuti=$(printf '%02d\\n' ${file_minuti})\r\n                file_secondi=$(printf '%02d\\n' ${file_secondi})\r\n                file_giorno=$(printf '%02d\\n' ${file_giorno})\r\n                file_mese=$(printf '%02d\\n' ${file_mese})\r\n                file_anno=$(printf '%04d\\n' ${file_anno})\r\n\r\n                \/usr\/bin\/SetFile -d \"${file_mese}\/${file_giorno}\/${file_anno} ${file_ora}:${file_minuti}:${file_secondi}\" \"${file}\"\r\n\t\tif [ ${?} != 0 ]; then\r\n\t\t    printf 'ERRORE: Nel cambiare la data di creazione si e verificato un problema con codice %d \\n' ${?}\r\n\t\tfi\r\n\t\t\r\n                \/usr\/bin\/SetFile -m \"${file_mese}\/${file_giorno}\/${file_anno} ${file_ora}:${file_minuti}:${file_secondi}\" \"${file}\"\r\n\t\tif [ ${?} != 0 ]; then\r\n\t\t    printf 'ERRORE: Nel cambiare la data di modifica si e verificato un problema con codice %d \\n' ${?}\r\n\t\tfi\r\n            fi\r\n        else\r\n            printf '  Data prevista   : %02d:%02d:%02d %02d\/%02d\/%04d\\n' ${file_ora} ${file_minuti} ${file_secondi} ${file_giorno} ${file_mese} ${file_anno}\r\n        fi\r\n    else\r\n        printf 'ERRORE: File  %s  non trovato !\\n' \"${file}\"\r\n    fi\r\ndone\r\n\r\n################################################################################\r\n#_______________________________________________________________________________<\/pre>\n<\/li>\n<li>Ora dobbiamo salvare il codice incollato premendo il tasto <strong>ESC<\/strong>\u00a0della tastiera e il comando:\n<pre>ZZ<\/pre>\n<p>(facendo attenzione a rispettare le maiuscole)<\/li>\n<li>Bene, \u00e8 arrivato il momento di rendere eseguibile lo script con il comando:\n<pre>chmod +x uda_change_time<\/pre>\n<p>e uscire dallo stato di amministratore con il comando:<\/p>\n<pre>exit<\/pre>\n<\/li>\n<\/ol>\n<p>Ok, fino a qui, sono le operazioni &#8211; da eseguirsi solo una volta &#8211; necessarie per creare lo script e renderlo eseguibile; adesso passiamo alla modifica dei file in oggetto !<\/p>\n<p>Supponiamo di avere una SD-Card con le foto, la inseriamo nell&#8217;apposito slot, l&#8217;iMac monta la card e, sul desktop, ci mostra la relativa icona. Il nostro problema \u00e8 ora, da terminale, rendere corrente la cartella contenente le foto o comunque i files &#8211; da sistemare.<\/p>\n<p style=\"padding-left: 30px;\">N.B.: Quando si inserisce una SD-Card o comunque si collega una fotocamera, facile che iPhoto parta in automatico. Non \u00e8 il momento opportuno per importare le foto, la data va sistemata\u00a0<strong>prima<\/strong>, non dopo, quindi chiuderlo.<\/p>\n<p>Utilizzare l&#8217;icona sul desktop per aprire la finestra nel Finder, navigare nelle cartelle presenti sul dispositivo al fine di trovare le foto da modificare; a questo punto, nel terminale, scrivere il comando (<strong>senza premere INVIO<\/strong>):<\/p>\n<pre>cd<\/pre>\n<p>(notare che, dopo &#8220;cd&#8221;, c&#8217;\u00e8 uno spazio, rispettarlo !) e, dalla finestra del Finder dove sono presenti le foto, cliccare &#8211; nel titolo della finestra &#8211; sull&#8217;icona della cartella\u00a0finale &#8211; antecedente il nome della stessa &#8211; e trascinarla nella finestra del Terminale e l\u00ec rilasciare. Si ottiene che Mac OS X copia in automatico, nel terminale, il percorso corretto, facendo in modo che il comando che si \u00e8 precedentemente iniziato a scrivere diventi <span style=\"text-decoration: underline;\">simile<\/span> al seguente:<\/p>\n<pre>cd \/Volumes\/Untitled\/DCIM\/101SSCAM<\/pre>\n<p>Ecco, ora, si pu\u00f2 premere INVIO. Per verificare che tutto sia stato eseguito correttamente, usare il comando:<\/p>\n<pre>ls<\/pre>\n<p>per elencare i files presenti; mi aspetto siano elencati dei file con estensione &#8220;.JPG&#8221;, tuttavia, i comandi che andr\u00f2 a proporre di seguito servono per modificare qualsiasi file sia presente nella cartella corrente.<\/p>\n<p>Ora \u00e8 giunto il momento di passare alla modifica della data\/ora. Sono presenti pi\u00f9 metodi:<\/p>\n<ul>\n<li>Aggiungere o sottrarre del &#8220;tempo&#8221; alla data\/ora corrente dei file.<\/li>\n<li>Impostare a tutti i file la data e l&#8217;ora corrente.<\/li>\n<li>Impostare a tutti i file la data e l&#8217;ora desiderate.<\/li>\n<\/ul>\n<p><span style=\"font-size: medium;\"><span style=\"line-height: 24px;\">Notare che solo la prima soluzione &#8211; che \u00e8 quella consigliata &#8211; consente di impostare la data e l&#8217;ora che i file dovevano avere gi\u00e0 in origine, le altre due la forzano ad una ben precisa.<\/span><\/span><\/p>\n<p>Il mio consiglio \u00e8 quello di partire da un comando di test che non modifica nulla, ma consente di elencare i file con la loro data corrente, in modo da rendersi conto dell&#8217;entit\u00e0 di tempo da usare per la modifica. Il comando \u00e8 il seguente:<\/p>\n<pre>uda_change_time 0 0 0 0 0 0 '*' --test<\/pre>\n<p style=\"padding-left: 30px;\">N.B.: Il Terminale di Mac OS X (ma quelli UNIX in generale) sono strumenti molto potenti; tra le varie cose \u00e8 possibile ripristinare i comandi dati in precedenza usando i tasti freccia della tastiera. E&#8217; anche possibile farsi aiutare nel completamento dei comandi da eseguire utilizzando il tasto &#8220;-&gt;|&#8221; (tabulazione); ad esempio, se si inizia a scrivere &#8220;uda&#8221; e si preme il tasto\u00a0<em>tabulazione<\/em> , si ottiene che viene automaticamente scritto &#8220;uda_time_change&#8221;, risparmiando fatica e la possibilit\u00e0 di errori.<\/p>\n<p>Nel comando dato in precedenza bisogna porre attenzione ai sei parametri numerici &#8220;0&#8221; (zero) che, rispettivamente, rappresentano: ora, minuti, secondi, giorni, mesi e anni di modifica.<\/p>\n<p>Ad esempio, supponiamo che l&#8217;ora\/data delle nostre foto sia sballata in maniera che, per ripristinarla, sia necessario: <em><strong>togliere 3 ore, aggiungere 10 minuti, togliere 30 secondi, togliere 6 giorni, aggiungere 2 mesi e aggiungere 4 anni<\/strong><\/em>.<\/p>\n<p>Il comando che &#8211; ancora in fase di test &#8211; andremo a dare sar\u00e0 il seguente:<\/p>\n<pre>uda_change_time -3 10 -30 -6 2 4 '*' --test<\/pre>\n<p>cos\u00ec da renderci conto se l&#8217;operazione avr\u00e0 gli effetti desiderati; se ci\u00f2 si verifica, possiamo procedere effettivamente alla modifica (togliendo l&#8217;opzione &#8220;&#8211;test&#8221;) con:<\/p>\n<pre>uda_change_time -3 10 -30 -6 2 4 '*'<\/pre>\n<p>Per una guida completa dello script, usare:<\/p>\n<pre>uda_change_time --help<\/pre>\n<p>Una volta terminata la modifica della data, possiamo uscire dal terminale con il comando:<\/p>\n<pre>exit<\/pre>\n<p>e la combinazione di tasti <strong>cmd+q<\/strong> .<\/p>\n<p>Non ultimo:\u00a0<strong>Non mi assumo nessuna responsabilit\u00e0 per qualsiasi danno possa eventualmente derivare direttamente o indirettamente da quanto descritto in questo articolo e dall&#8217;uso proprio o improprio dello script.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ho gi\u00e0 creato il medesimo articolo dedicato a Linux ma, essendo lo script che esegue l&#8217;operazione, piuttosto diverso nella versione iMac ho, per praticit\u00e0, preferito crearlo ex-novo. Il problema:\u00a0cambiare la data ad un insieme di foto (ma, volendo, a qualsiasi file) con uno strumento sufficientemente potente, che mi consenta di stabilire se eseguire addizioni\/sottrazioni alle &hellip; <a href=\"https:\/\/www.budus.it\/Blog\/cambiare-data-alle-foto-con-imac\/\" class=\"more-link\">Leggi tutto<span class=\"screen-reader-text\"> &#8220;Cambiare data alle foto con iMac&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57,10,25,6],"tags":[176,182,180,185,186,183,99],"class_list":["post-632","post","type-post","status-publish","format-standard","hentry","category-development","category-multimedia","category-operating-system","category-software","tag-bash","tag-data","tag-imac","tag-iphoto","tag-modifica","tag-ora","tag-script"],"_links":{"self":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/comments?post=632"}],"version-history":[{"count":10,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/632\/revisions"}],"predecessor-version":[{"id":874,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/posts\/632\/revisions\/874"}],"wp:attachment":[{"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/media?parent=632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/categories?post=632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.budus.it\/Blog\/wp-json\/wp\/v2\/tags?post=632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}