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 > > >