I don't think the following command-line from your article:
# Clean the images off of your *nix desktop find ~/Desktop -name "*.jpg" -o -name "*.gif" -o -name "*.png" -print0 | xargs -0 mv ~/Pictures
will work as you expect. You'll want to wrap the find(1) -name tests in parentheses, otherwise you'll only list the *.png files.
Also, the mv(1) command(s) that xargs(1) will generate, won't work because the last argument needs to be a directory. Assuming your Desktop directory looks like this:
$ ls Desktop Pictures Desktop: bar.png foo.gif one.png three.jpg two.jpg
Pictures:
here's the results of running your original command-line:
$ find Desktop -name "*.jpg" -o -name "*.gif" -o -name "*.png" -print0 | xargs -0 -t mv Pictures mv Pictures Desktop/bar.png Desktop/one.png mv: when moving multiple files, last argument must be a directory Try `mv --help' for more information.
IIRC the --target-directory option is specific to the GNU version of mv(1).
If you had a standard mv(1) command lacking the --target-directory option, you'd need to move one file at a time and xargs wouldn't provide much benefit over the -exec feature of find(1):
The -t option to xargs(1) is your friend. It traces the commands generated by xargs(1). If you want to be extra cautious, use -p instead and it will print each command-line and ask you if you want to proceed.