Respostas:
Você pode copiar tudo com
cp -rf
e exclua os diretórios ocultos no destino com
find -type d -name '.*' -and -not -name '.' -print0 | xargs -0 rm -rf
Como alternativa, se você tiver algum tar avançado (por exemplo, GNU tar), tente usar o tar para excluir alguns padrões. Mas receio que não seja possível excluir apenas diretórios ocultos, mas incluir arquivos ocultos.
Por exemplo, algo como isto:
tar --exclude=PATTERN -f - -c * | tar -C destination -f - -x
Aliás, o GNU tar possui um zoológico de opções de estilo de exclusão. Meu favorito é
--exclude-vcs
Boas opções para copiar uma árvore de diretórios, exceto para alguns arquivos, são:
rsync : isso é basicamente cp mais uma tonelada de possibilidades de exclusão.
rsync -a --exclude='.*' /source/ /destination
pax : possui alguns recursos de exclusão e está no POSIX, portanto deve estar disponível em qualquer lugar (exceto que algumas distribuições Linux não o incluem em sua instalação padrão por algum motivo).
cd /source && mkdir -p /destination && \
pax -rw -pp -s '!.*/\..*!!' . /destination
Como alternativa, cp
você pode usar rsync
com um --exclude=PATTERN
.