[Linuxtrent] Re: Script (o simile) di conversione automatica foto

  • From: Nicola Manica <nicola.manica@xxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Mon, 5 Jan 2015 18:46:31 +0100

So che farò arrabbiare i puristi ma siccome sono pigro e se non ci sono
problemi di spazio utilizzerei un repository git locale per "capire" le
differenze (git status -s), così da fare la conversione dei soli file nuovi
o modificati.
Se non mi sfugge qualcosa l'unico caso particolare è l'aggiunta di
directory che va gestito a parte

Una volta terminato lo script di aggiornamento si fa un commit sul
repository e tutto ricomincia. Ovviamente questo sistema fa "perdere" il
sincronismo fra le due directory, ma semplifica lo script di aggiornamento.

Quindi una volta creato il repository e fatto il primo commit dovrebbe
essere sufficiente qualcosa di simile.
#!/bin/bash

DEST=/resized_photo_dest

REPO=/root_repo_git

cd $REPO
git status -s | while read line;
  do
    change=${line% *};
    file=${line#* };
    if [ -d $file ]
    then
        find $file -type f -exec cp --parents {} $DEST -exec mogrify -scale
1920x1080 $DEST/{} \;
    else
        cp --parents $file $DEST
        mogrify -scale 1920x1080 $DEST/$file
    fi
  done

git add -A
git commit -m "Added new photos!"
cd - 2> /dev/null

NB: Non ho testato lo script e assumo che i file contenuti nelle directory
siano immagini, in caso basta modificare il find aggiungendo -regex e fare
un check su $file nel caso else



Il giorno 5 gennaio 2015 11:50, Flavio Stanchina <flavio@xxxxxxxxxxxxx> ha
scritto:

> On 04/01/2015 02:38, Antonio Galea wrote:
> >   for f in `find src/ -name \*.jpg`
> >   do
> >      [...]
>
> Passando gli argomenti in questo modo, prima o poi si incappa nel limite di
> lunghezza della riga di comando. Usate
>
>   find src -name '*.jpg' | while read f; do ...
>
> ...che tra l'altro parallelizza (almeno in parte) l'operazione di lettura
> della directory e l'effettiva elaborazione dei file.
>
> --
> Ciao, Flavio
>
> Those who do not understand Unix are condemned to reinvent it, poorly.
> -- Henry Spencer
> --
> Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
> "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx
>
>
>

Other related posts: