Em vez de encontrar o encanamento, você pode passar por um arquivo intermediário. Isso garantirá que a etapa de descoberta e etapa de looping acontece em seqüência, sem sobreposição. Algo como o seguinte (alterei sua expressão para brevidade):
find \( -name '*.mkv' -o -name '*avi' \) >files
<files while IFS= read file
do
ffmpeg -i "$file" "$target" && rm -f "$file"
done
Note que isso ainda não é completamente seguro; usar find -exec
seria mais simples se seus requisitos não incluíssem find
estritamente antes da primeira chamada para ffmpeg
. Com esse requisito, usar find -print0
junto com xargs ou GNU parallel poderia fazer o trabalho.