Воспользуйся rsync
:
rsync -avr --exclude='path1/to/exclude' --exclude='path2/to/exclude' source destination
Обратите внимание, что использование source
и source/
они разные. Завершающая косая черта означает копирование содержание из папки source
в destination
. Без завершающей косой черты это означает копирование источника папки в destination
.
В качестве альтернативы, если у вас есть много каталогов (или файлов), которые нужно исключить, вы можете использовать --exclude-from=FILE
, где FILE
это имя файла, содержащего файлы или каталоги, которые необходимо исключить.
--exclude
может также содержать подстановочные знаки, такие как --exclude=*/.svn*
Скопировано С: https://stackoverflow.com/a/2194500/749232
Если вы хотите использовать cp
сам:
find . -type f -not -iname '*/not-from-here/*' -exec cp '{}' '/dest/{}' ';'
При этом предполагается, что структура целевого каталога такая же, как и у исходного.
Скопировано С: https://stackoverflow.com/a/4586025/749232