Команда cp для исключения копирования определенных файлов

Воспользуйся 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