Is there a way to use the cp
command to copy a directory and exclude certain files/sub-directories within it?
Is there a way to use the cp
command to copy a directory and exclude certain files/sub-directories within it?
Use rsync
:
rsync -av --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
Note that using source
and source/
are different. A trailing slash means to copy the contents of the folder source
into destination
. Without the trailing slash, it means copy the folder source into destination
.
Alternatively, if you have lots of directories (or files) to exclude, you can use --exclude-from=FILE
, where FILE
is the name of a file containing files or directories to exclude.
-av
means archive mode and verbose.
--exclude
may also contain wildcards, such as --exclude=*/.svn*
.
Copied From: https://stackoverflow.com/a/2194500/749232
If you want to use cp
itself:
find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'
This assumes the target directory structure is the same as the source's.
Copied From: https://stackoverflow.com/a/4586025/749232