cp dir1/* dir2
cp não copiará os diretórios, a menos que seja explicitamente solicitado (com --recursive , por exemplo, consulte man cp ).
Observação 1: cp provavelmente sairá com um status diferente de zero, mas os arquivos serão copiados de qualquer maneira. Isso pode ser um problema ao encadear comandos com base em códigos de saída: && , || , if cp -r dir1/* dir2; then ... etc. (graças a contrebis para comentário deles sobre essa questão )
Observação 2 : cp espera que o último parâmetro seja um único nome de arquivo ou diretório. Não deve haver nenhum caractere curinga * após o nome do diretório de destino. dir2\* será expandido pelo shell como dir1\* . Coisas inesperadas ocorrerão :
- Se
dir2estiver vazio e dependendo do seu shell e configurações:- você pode receber uma mensagem de erro, que é o melhor cenário possível.
-
dir2/*será obtido literalmente (procurando por um arquivo / diretório denominado*), o que provavelmente levará a um erro também, a menos que*realmente exista. -
dir2/*será apenas removido do comando inteiramente, deixandocp dir1/*. Que, dependendo da expansão dedir1/*, pode até destruir dados:- Se
dir1/*corresponder a apenas um arquivo ou diretório, você receberá um erro decp. - Se
dir1/*corresponder exatamente a dois arquivos, um será substituído pelo outro ( Bad ). - Se
dir/*corresponder a vários arquivos e a última correspondência for a, você receberá uma mensagem de erro. - Se a última correspondência de
dir/*for um diretório, todas as outras correspondências serão movidas para ele.
- Se
- Se
dir2não estiver vazio, depende novamente:- Se a última correspondência de
dir2/*for um diretório,dir1/*e as outras correspondências dedir2/*serão movidas para. - Se a última correspondência de
dir2/*for um arquivo, você provavelmente receberá uma mensagem de erro, a menos quedir1/*corresponda apenas a um arquivo.
- Se a última correspondência de