Quando o último argumento para cp
é um diretório existente, cp
copia o (s) arquivo (s) de origem para esse diretório. mv
faz o mesmo.
Você gostaria de mesclar o diretório de origem com o diretório de destino. Mas isso só faria sentido quando a fonte fosse um diretório. Então, quando você executa cp somefile existing-directory/
, acaba com existing-directory/somefile
; e quando você executa cp -r somedir existing-directory/
, acaba com existing-directory/somedir
. O comportamento que você acha intuitivo (mas que eu não entendo) exigiria que cp
faça diferença dependendo se a origem é um diretório ou não, portanto, cp -r somefile somedir existing-directory/
criaria existing-directory/somefile
, mas não existing-directory/somedir
. / p>
cp something existing-directory
copia a origem no diretório de destino. Se a fonte for um diretório e você quiser copiar seu conteúdo, execute
cp -rp something/* existing-directory/
Observe que isso omite arquivos cujo nome começa com .
. Se você quiser incluí-los, uma maneira fácil é usar rsync
:
rsync -a something/ existing-directory/
Com rsync
, se você colocar um /
no final da fonte, o conteúdo da origem será copiado no diretório de destino. Sem um /
à direita na origem, a origem é criada como uma entrada no diretório de destino.