You must surround your
find ... command with
$( ) to substitute the output, thusly:
for i in $( find . -type f -iname '*.wmv` ) ; do ...
However, you're causing Bash to produce (and store internally) a list of 120,860 filenames before you process the first one. Also (you haven't described the format of the filenames), this technique mishandles filenames with Spaces in them, e.g.
A Big File.wmf.
man find, especially, about
man xargs, especially about
man bash and wrap your command in a script that runs
uniconverter on each of its arguments, and use something like:
find . -type f -iname '*.wmv' -print0 | xargs -0 thescript
Be sure to read
man bash and be very aware of any Spaces in your filenames.
@steeldriver: TQ for pointing out my error. Reading
man bash shows:
Enclosing characters in double quotes preserves the literal value of
all characters within the quotes, with the exception of $, `, \, and,
when history expansion is enabled, !. The characters $ and ` retain
their special meaning within double quotes. The backslash retains its
special meaning only when followed by one of the following characters:
$, `, ", \, or <newline>. A double quote may be quoted within double
quotes by preceding it with a backslash.
So I overworried about Shell expansion.