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
dir2
estiver 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
dir2
nã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