Eu tenho projetos Eclipse e arquivo ".project" neles, a estrutura de diretórios se parece com ' myProject/.project
'. Eu quero copiar esses arquivos '.project' para outro diretório, mas quero que o nome do diretório seja preservado.
Digamos que eu tenha ' a/myProject/.project
', quero copiar ' myProject/.project
' para ' b
', então seja ' b/myProject/.project
', mas ' b/myProject
' não existe. Quando eu tento em um:
cp -r ./myProject/.project ../b
ele copia apenas o próprio arquivo '.project', sem o diretório 'myProject'. Por favor informar.
O switch que você precisa é
--parents
, por exemplo:Você também pode usar
rsync -R
, que funciona no OSX ondecp --parents
não está disponível.https://stackoverflow.com/a/13855290/598940
Use
tar
com algo como:(Não testado. Faça uma simulação primeiro ou tente em um cenário de maquete.)
Primeiro use
mkdir -p
para criar a pasta de destino com a criação de caminho pai recursivo. Em seguida, copie o conteúdo para a pasta de destino:Eu uso cpio em combinação com find. Explicação aqui .
Exemplo para seu caso de uso:
Este comando encontra todos os arquivos
/a/myProject/.project/
e copia, preservando o caminho, todos os arquivos contidos nele.Veja
man cp
para mais informações.Além disso
--parents
, também é necessário adicionar a-r
opção para evitar omitir a cópia da maioria dos diretórios internosEntão o comando que funciona para mim é
Esteja ciente de que parece haver um bug no
cp --parents
. Quando usei--parents
junto com--preserve=all
, os atributos de data e hora de ALGUNS diretórios de destino NÃO foram preservados.O link a seguir parece confirmar que isso é um bug: bug#8767: cp: --preserve=all não funciona para os pais quando --parent é usado .
Portanto, parece que você não pode confiar em atributos sendo preservados ao usar
--parents
junto com como--preserve=all
ou-p
.Usei
--parents
com ocp
comando e funcionou perfeitamente comigo. para mais detalhes use sempre o manual. Obrigada.