l script @Shell mientras el ciclo de lectura se ejecuta solo una vez

Estoy escribiendo un script de shell para procesar por lotes archivos .mov de mi cámara a través de Handbrake para ahorrar espacio en HD. El script busca en un directorio con 'find' y luego ejecuta Handbrake en cada archivo .mov encontrado, haciendo coincidir la fecha de creación del archivo resultante con la fecha del archivo fuente con 'touch'.

Originalmente hice esto con unpar lazo

for i in $(find "$*" -iname '*.mov') ; do
  ~/Unix/HandbrakeCLI --input "$i" --output "$i".mp4 --preset="Normal"
  touch -r "$i" "$i".mp4
done

Esto funcionó, pero falló si los archivos de entrada tenían espacios en sus nombres de archivo. Así que probé unamientra loop en su lugar:

find "$*" -iname '*.mov' | while read i ; do
  ~/Unix/HandbrakeCLI --input "$i" --output "$i".mp4 --preset="Normal"
  touch -r "$i" "$i".mp4
done

El problema con este bucle es que funciona para el primer archivo en el directorio y luego sale del bucle. Tenga en cuenta que si sustituyo un "echo $ i" en el cuerpo del ciclo while, imprime todos los archivos .mov en el directorio, por lo que el ciclo está estructurado correctamente.

Creo que hay una respuesta parcial a mi pregunta eneste hilo de stackoverflow. Pero la solución es específica de ssh y no resuelve el problema general. Parece tener algo que ver con que stdin sea utilizado por un subproceso, pero no entiendo exactamente cómo funciona esto.

¿Algún consejo

Estoy en OSX 10.6

Respuestas a la pregunta(6)

Su respuesta a la pregunta