O motivo é porque, em bash
, *
não inclui arquivos que começam com ponto ( .
).
Você pode executar
cp A/.* B
Ele irá avisá-lo que não copiou .
ou ..
, ou quaisquer subdiretórios, mas está tudo bem.
Ou, se você quiser copiar arquivos de ponto e arquivos normais juntos, execute
cp A/.* A/* B
Você também pode executar
shopt -s dotglob
cp A/* B
que funcionará em bash
, mas não em sh
.
E se você não se importar com os subdiretórios sendo copiados, então é o mais fácil:
cp -R A/ B
Dica: se os curingas já não estiverem fazendo o que você espera, tente executá-los com eco, por exemplo,
$ echo A/*
A/file1 A/file2
$ echo A/.*
A/. A/.. A/.hidden1 A/.hidden2
$ echo A/.* A/*
A/. A/.. A/.hidden1 A/.hidden2 A/file1 A/file2
$ shopt -s dotglob
$ echo A/*
A/file1 A/file2 A/.hidden1 A/.hidden2