cp -r sem arquivos ocultos

90

Tenho dois diretórios e um está vazio.

O primeiro diretório possui muitos subdiretórios com arquivos ocultos. Quando eu cp -rconteúdo do primeiro diretório para o segundo, os arquivos ocultos também são copiados. Alguma solução para escapar deles?

Rahul
fonte
é possível, mas removê-los após a cópia pode ser mais simples
Karoly Horvath
6
sim, mas copiar os arquivos ocultos para outros locais é um risco de segurança no meu caso.
Rahul

Respostas:

129

Você pode usar o rsync:

rsync -av --exclude=".*" src dest
Eugene Yarmash
fonte
1
Alguma sobrecarga quando comparada com o cp?
Rahul
2
@Rahul Não me ocorreu fazer um benchmark, mas acho que você não deveria se preocupar com isso
Eugene Yarmash
3
Funciona bem! Obrigado cara! Apenas para informação, rsync seria ótimo quando o tamanho do arquivo é grande, mas igual a cp no caso de arquivos menores.
Rahul
28

Você pode fazer

cp -r SRC_DIR/* DEST_DIR

para excluir todos os .files e .dirs no nível SRC_DIR, mas ainda copiaria quaisquer arquivos ocultos no próximo nível de subdiretórios.

Tuxdude
fonte
6
Esse é exatamente o problema .. :)
Rahul
9
Mas funciona para GIT-Repos, se você não quiser copiar todo o índice GIT em .git / ...
Sedat Kilinc
1
Eu adicionei esta resposta porque esta é a solução que eu estava procurando. Não quero excluir todos os invisíveis na árvore, apenas os invisíveis no nível da raiz!
l008com
Outra variante cp SOURCE/[!.]* TARGET.
Carel de
4

rsync tem a opção "-C"

http://rsync.samba.org/ftp/rsync/rsync.html

Exemplo:

rsync -vazC  dir1 dir2
Slitvinov
fonte
Você está certo. Tentei mkdir -p dir1 / subdir; toque em dir1 / subdir / .cvs; rsync -avzC dir1 dir2
slitvinov
rsync -av --exclude = ". *" src dest funciona muito bem. Consulte a resposta acima por eugene. Obrigado mesmo assim! :)
Rahul