How do I merge one directory into another using Bash?
You probably just want cp -R $1/* $2/
— that's a recursive copy.
(If there might be hidden files (those whose names begin with a dot), you should prefix that command with shopt -s dotglob;
to be sure they get matched.)
cp -RT source/ destination/
All files and directories in source
will end up in destination
. For example, source/file1
will be copied to destination/file1
.
The -T
flag stops source/file1
from being copied to destination/source/file1
instead. (Unfortunately, cp
on macOS does not support the -T
flag.)
Take a look at rsync
rsync --recursive html/ html_new/
Notice that the trailing slash /
matters in this case. If you omit it from the source argument, rsync
will write the files to html_new/html/
instead of html_new/
.
Rsync has got a lot of flags to set so look at rsync manpage for details.