
Quero copiar alguns ou todos os arquivos de um diretório test/A/
para directory test/B/
, mas sem copiar o próprio diretório A.
Eu tentei o comando cp -R test/A/ test/B
, mas ele copia o diretório e os arquivos também e fica test/B/A/
…
Responder1
Ao especificar test/A/
, você diz ao Bash para copiar o próprio diretório.
Para copiar apenas o conteúdo de um diretório, useo *
globo:
cp -R test/A/* test/B
Aqui, *
corresponderá a todos os arquivos em A, exceto os ocultos prefixados com um ponto, por exemplo .htaccess
, . Para incluí-los também com um *
, ligue shopt -s dotglob
antes.
Responder2
para obter uma cópia idêntica localmente ou remotamente, eu rsync
preferiria cp
. Isso lhe dá um controle muito mais preciso sobre o que deve ser copiado ou até mesmo excluído na origem ou no destino, se desejado. E, a propósito, corrige problemas com arquivos ocultos (também conhecidos como .*
). O uso básico é tão simples quanto cp
.
para copiar um diretório A
e seu conteúdo para B
usar:
rsync -va test/A test/B
para copiar o conteúdo do diretório A
(incluindo arquivos ocultos) para B
usar:
rsync -va test/A/ test/B
se B não existe ele é criado