以下はファイル名と移動先のリストを順次処理する例
#!/bin/sh
set -eux;
cat << EOT | xargs --no-run-if-empty --max-procs 2 --max-args 2 --delimiter "\n" --verbose sh -eux -c 'mv "${0}" "${1}"'
some.file00
/path/to/directory0
some.file10
/path/to/directory1
some.file01
/path/to/directory0
some.file11
/path/to/directory1
EOT
xargs に与えるリストを sed 等で加工することも可能。また、xargsは実行したコマンドの戻り値が 255 の場合に停止するので、sh -c で与えたコマンドの結果を評価して、を exit 255 等で終わらせることも可能。
#!/bin/sh
set -eux;
sed \
--expression "s# /path/#\n/path/#;" \
<< EOT | xargs --no-run-if-empty --max-procs 2 --max-args 2 --delimiter "\n" --verbose sh -eux -c 'mv "${0}" "${1}" || exit 255;'
some.file00 /path/to/directory0
some.file10 /path/to/directory1
some.file01 /path/to/directory0
some.file11 /path/to/directory1
EOT