retaining the order of output to remain the same order as input;
dealing nicely with filenames containing special characters such as space, single quote, double quote, ampersand, and UTF-8 encoded characters;
By default, parallel runs as many jobs in parallel as there are CPU cores.
Examples
find.-name"*.foo"|parallelgrepbar
The above is the parallel equivalent to:
find.-name"*.foo"-execgrepbar{}+
This searches in all files in the current directory and its subdirectories whose name end in .foo for occurrences of the stringbar. The parallel command will work as expected unless a file name contains a newline. In order to avoid this limitation one may use:
find.-name"*.foo"-print0|parallel-0grepbar
The above command uses the null character to delimit file names.
find.-name"*.foo"|parallel-Xmv{}/tmp/trash
The above command expands {} with as many arguments as the command line length permits, distributing them evenly among parallel jobs if required. This can lower process overhead for short-lived commands that take less time to finish than they do to launch.
However, the former command which uses find/parallel/cp is more resource efficient and will not halt with an error if the expansion of *.ogg is too large for the shell.
Wikimedia Commons has media related to GNU parallel.