Ciao, possiedo più di 300 immagini in formato raw che devo convertire nel formato tif. Utilizzo il comando raw2tiff ma riesco solo a convertirne una per volta.
Posto qui un esempio:

raw2tiff -w 2048 -l 2048 -d short -c none -s inputname.raw outputname.tif

C'è un modo che mi permetta di utilizzare questo commando più volte automatizzandolo per convertire tutte le mie immagini? (ho pensato di scrivere *.raw *.tif ma ovviamente non funziona in questo modo)

Grazie in anticipo per la risposta

chiesto 02 Ott '14, 23:27

eeb's gravatar image

eeb
35147

modificato 03 Ott '14, 00:27

dadexix86's gravatar image

dadexix86 ♦♦
16.9k816161


Ti ringrazio per la rapida risposta, non sono però riuscito a utilizzare quello script.

Mi restituisce l'errore:

raw2tiff: /*.raw: Cannot open input file.

Sono però riuscito a risolvere con questo script:

for i in *.raw; do raw2tiff -w 2048 -l 2048 -d short -c none -s  $i `basename $i .raw `.tif; done
coll. permanente

ha risposto 03 Ott '14, 10:14

eeb's gravatar image

eeb
35147

1

Probabilmente non avevi passato la directory in input come da istruzioni :)

Ma se hai risolto così, tanto meglio! :)

Per favore accetta la tua risposta, così la domanda viene segnata come risposta :)

(03 Ott '14, 10:26) dadexix86 ♦♦ dadexix86's gravatar image
1

@eeb: metti sempre "$i" invece di $i, così non avrai problemi con i nomi di file contenenti spazi.

(03 Ott '14, 12:58) enzotib ♦♦ enzotib's gravatar image

Non è troppo chiaro dalla tua domanda come si debbano chiamare queste immagini, comunque suppongo che dopo la conversione l'immagine abbia lo stesso nome di prima, solo con estensione cambiata.

Se così fosse, questo semplice script dovrebbe automatizzarti il processo:

#!/bin/sh
# convert.sh
#
# Usage: ./convert.sh directory
#
# Script that converts all the .raw files in the directory to .tif with max dimension 2048 px.
# The first thing done is a backup of everything in a subdirectory of "directory"
#
# Author: Davide Alberelli dadexix86@gmail.com
# License and Warranty: GNU/GPL 3, can be found at the page http://www.gnu.org/licenses/gpl.html
#

workdirectory=$1

mkdir -p "$workdirectory/Original_$(date +%d\ %h\ %Y)"
echo "Copying backup files..."
cp -r "$workdirectory"/*.raw "$1/Original_$(date +%d\ %h\ %Y)"

echo
echo "Converting to TIFF format..."
for file in "$workdirectory"/*.raw; do
  filename=$(basename "$file")
  echo "Converting $file..."
  raw2tiff -w 2048 -l 2048 -d short -c none -s "$file" "${filename%.*}".tif
done

NOTA BENE: lo script non è testato perché

  1. non ho quel programma
  2. non ho dei raw sottomano da poter usare
coll. permanente

ha risposto 03 Ott '14, 00:39

dadexix86's gravatar image

dadexix86 ♦♦
16.9k816161

modificato 03 Ott '14, 15:01

@dadexix86: mi lasciano perplesso le virgolette inverse intorno all'ultimo comando del for.

(03 Ott '14, 07:52) enzotib ♦♦ enzotib's gravatar image

Mah, io ho preso uno script che avevo lì da qualche parte e l'ho modificato. Francamente non mi sono mai posto troppo il problema degli apici inversi lì.

Guardando sul manuale di sh, servono per la sostituzione di comando, quindi potrebbero essere decisamente inutili.

(03 Ott '14, 10:27) dadexix86 ♦♦ dadexix86's gravatar image

@dadexix86: non sono solo inutili, in qualche caso possono anche essere dannosi. Pensavo volessi ottenere qualche risultato particolare con quegli apici, ma il tuo commento mi fa pensare che sono solo un errore.

(03 Ott '14, 12:57) enzotib ♦♦ enzotib's gravatar image

Mah, da quel che ho capito gli apici dovrebbero essere equivalenti a "${}", quindi perché dannosi?

Dovrebbero permettermi di riprendere il valore di output del comando e usarlo per farci altro, tipo darlo in input all'utente, come con

pippo = `comando`
echo pippo

Però, se non hanno un'assegnazione a seguire, semplicemente l'output non viene processato. O sbaglio?
Forse non ho troppo chiaro cosa succeda :)

(03 Ott '14, 13:05) dadexix86 ♦♦ dadexix86's gravatar image

@dadexix86: l'output viene processato ed eseguito, ecco un esempio in cui un file viene rimosso inavvertitamente:

# creo un file di esempio di nome "foo"
echo "qualcosa" >foo

# creo uno script il cui compito è scrivere "rm foo"
{ echo "#!/bin/sh"; echo "rm foo"; } > myscript

# gli do i permessi di esecuzione
chmod +x myscript

# lo eseguo con gli apici inversi
`./myscript`

ls foo
=> ls: impossibile accedere a foo: No such file or directory
(03 Ott '14, 14:06) enzotib ♦♦ enzotib's gravatar image

@enzotib Due cose:

  1. Non funziona per qualche strano motivo il redirect:

    { echo "#!/bin/sh"; echo "rm foo"; } > myscript
    bash: !/bin/sh: event not found
    
  2. Anche se esegui myscript senza apici cancella il file foo; non è inavvertitamente che viene cancellato, perché fa esattamente quello che gli chiedi fare :)

(03 Ott '14, 14:11) dadexix86 ♦♦ dadexix86's gravatar image

@dadexix86: ecco una versione corretta per entrambi gli errori.

# rimuovo l'interpretazione del carattere ! per l'history
set +H

# creo un file di esempio di nome "foo"
echo "qualcosa" >foo

# creo uno script il cui compito è scrivere "rm foo"
{ echo "#!/bin/sh"; echo "echo rm foo"; } > myscript

# gli do i permessi di esecuzione
chmod +x myscript

# lo eseguo con gli apici inversi
`./myscript`

ls foo
=> ls: impossibile accedere a foo: No such file or directory
(03 Ott '14, 14:37) enzotib ♦♦ enzotib's gravatar image

Ah, ecco, ora è più chiaro :)

Grazie!

(modifico quanto sopra)

(03 Ott '14, 15:01) dadexix86 ♦♦ dadexix86's gravatar image
La tua risposta
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×14

domanda posta: 02 Ott '14, 23:27

domanda visualizzata: 762 volte

ultimo aggiornamento: 03 Ott '14, 15:01

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.