for path in *.avi; do echo "${path%.avi}"; done | xargs -I{} -P9 HandBrakeCLI -i {}.avi -o {}.mp4
This one-liner uses the wonderful HandBrakeCLI tool to convert videos to MP4 format, in parallel.
The one-liner solves 2 challenges:
something.avi into something.mp4.To convert filenames we use Parameter Substitution: given path=something.avi, the value of ${path%.avi} is something, with the .avi extension dropped.
To convert all filenames this way we use the loop:
for path in *.avi; do echo "${path%.avi}"; done
With xargs -I{} -P9 ... we can execute up to 9 commands in parallel. In the command we can use {} to inject the value of the input line. In this example the input lines are base filenames without extensions, so when the input line is somefile, to convert somefile.avi to somefile.mp4, we can use {}.avi and {}.mp4, respectively.
And so with HandBrakeCLI -i {}.avi -o {}.mp4 we execute the video converter with the correct input filename and intended output filename.
Another version of this writeup is on my blog: https://johntellsall.blogspot.com/2013/08/converting-video-for-media-player.html
Requires the Handbrake tool, install from https://handbrake.fr/ The tool also has a pretty GUI if you don't like the terminal :)