Como copiar no bash todos os diretórios e arquivos recursivos?

137

Eu tenho script:

find ./SourceFolder/ -maxdepth 4 -exec cp -R '{}' ./DestFolder/ \;

SourceDir contém também subpastas.

Problema que DestFoldernão apenas em toda a árvore, mas em todos os outros níveis e arquivos de nível superior.

Como consertar ?

user710818
fonte
Desculpe, esqueci de adicionar -name "* .txt"
user710818

Respostas:

289
cp -r ./SourceFolder ./DestFolder
lanzz
fonte
6
Portanto, para esclarecer, a opção -R maiúscula copiará o diretório raiz novamente; A opção -r pequena mantém os caminhos raiz iguais.
AnneTheAgile 7/08
8
@AnneTheAgile - dos meus testes agora e de acordo com as páginas de manual, -r e -R não diferem.
aaaaaa
@aaaaaa, ty! em qual OS / versão você está? Descobri mais tarde que parece que os comandos do bash podem diferir sutilmente entre os sistemas operacionais.
AnneTheAgile
2
cpnão é um comando bash, mas um executável separado, portanto é específico do sistema. Os verdadeiros comandos do bash, por outro lado, são os mesmos nos sistemas operacionais.
lanzz
52

código para uma cópia simples.

cp -r ./SourceFolder ./DestFolder

código para uma cópia com resultado de sucesso

cp -rv ./SourceFolder ./DestFolder

código forçosamente se a fonte contiver algum arquivo somente leitura, ele também copiará

cp -rf ./SourceFolder ./DestFolder

para detalhes ajuda

cp --help
user3708054
fonte