cp --parents option on mac

You can use the ditto command on Mac OS X:

The basic form

ditto <src-path> <dst-path>

does what you want. There's a lot more options too - check out the man page.


You can install the GNU version of cp using MacPorts.

After MacPorts is installed you can install the coreutils packages:

sudo port install coreutils

Then you will be able to use the GNU version cp and other core utilitites (ls, date, cat, etc.) by prefixing the command with a g:

gcp --parents test/withintest/go.rb test2

If you want these GNU versions to be used by default you can add the GNU bin update your path. Add the following to your ~/.bash_profile:

export PATH="/opt/local/libexec/gnubin:$PATH"

This bothered me quite a lot as well. A workaround for this could be to use rsync.

rsync -R test/withintest/go.rb test2

has the same effect as cp --parents and OS X comes standard with rsync.